我创建了这个名为 LOCATION 的表 通过这样做:
CREATE TABLE LOCATION(
POSTCODE VARCHAR(10) PRIMARY KEY,
STREET_NAME VARCHAR(20),
CITY VARCHAR(20));
当我尝试在表格中添加一些日期时,它不起作用,说有错误
INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FRANCE');
错误是说
此处不允许列
您缺少第一个值周围的引号,它应该是
INSERT INTO LOCATION VALUES('PQ95VM', 'HAPPY_STREET', 'FRANCE');
顺便说一句,出于可读性、可维护性和鲁棒性的原因,建议您在 INSERT 中显式指定列名称,即
INSERT INTO LOCATION (POSTCODE, STREET_NAME, CITY) VALUES ('PQ95VM', 'HAPPY_STREET', 'FRANCE');
我犯了错误,使用了错误的引号。我在值列表中使用双引号而不是单引号作为字符串分隔符。 Oracle 中的双引号用作列标识符中的分隔符,与 MySQL 中的双引号不同,双引号用于括起字符串文字。
INSERT INTO MYUSERS VALUES( 'Name', "Surname"); // Wrong
INSERT INTO MYUSERS VALUES( 'Name', 'Surname'); // Correct, Surname must be in single quotes
有时,在执行插入查询时,我们面临:
此处不允许列
错误。因为字符串参数中可能缺少引号。在字符串参数中添加引号并尝试执行。
试试这个:
INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');
或
INSERT INTO LOCATION (ID, FIRST_NAME, LAST_NAME) VALUES('PQ95VM','HAPPY_STREET','FRANCE');
INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FRANCE');
上述代码不正确,因为您的第一个参数 POSTCODE 的类型为
VARCHAR(10)
。你应该使用' '
。
尝试
INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');
就像斯卡夫曼所说 - 你缺少引号。 当您将值传递给 varchar2 时,始终使用引号
INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');
因此,第一个 (') 开始字符串,第二个 (') 结束字符串。
但是如果您想在字符串中添加引号符号,例如:
我父亲告诉我:“孩子,你必须勇敢”。
您必须使用三引号符号,例如:
“我父亲告诉我:“你必须勇敢,儿子”。”
*添加引用方法可能因不同的数据库引擎而异
示例
如果你有这样的事情:
INSERT INTO clients (id, email, country)
VALUES (1, "[email protected]", "USA");
将其转换为:
INSERT INTO clients (id, email, country)
VALUES (1, '[email protected]', 'USA');
您错过了邮政编码中的
" "
,因为它是 varchar
。
有两种插入方式。
当您创建了一个表
Table created.
并且在创建后立即添加一行时,您可以使用以下方法。
INSERT INTO table_name
VALUES (value1,value2,value3,...);
1 row created.
您添加了太多表,或者已保存并重新打开它,您还需要提及表的列名,否则会显示相同的错误。
ERROR at line 2:
ORA-00984: column not allowed here
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
1 row created.
如果我们在输入变量名称时犯了一些拼写错误,这个错误就会出现。 就像在存储过程中一样,我有变量名称 x 并且在我的插入语句中使用
insert into tablename values(y);
它将抛出一个此处不允许的错误列。
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
String surname = sc.nextLine();
Statement statement = connection.createStatement();
String query = "INSERT INTO STUDENT VALUES("+'"name"'+","+'"surname"'+")";
statement.executeQuery();
在连接字符串时不要错过添加'"----"'。
尝试使用 varchar2 而不是 varchar 并使用这个:
INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');
在插入数据时,我们必须使用字符串分隔符(
' '
)。而且,您在插入值时错过了它(' '
),这就是错误消息的原因。修正后的代码如下:
INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FRANCE');
我在使用插入命令时也遇到了同样的错误。当我用单引号替换双引号时,效果很好
如果
PQ95VM
应该是文字字符串,则使用 'PQ95VM'
。如果它是一个变量,请确保它被声明。
在 SQL Plus 中,我们必须使用单引号('')而不是双引号("")。
示例:
插入 emp value(1,"Nilay"); (错误的) 插入 emp 值(1,'Nilay'); (正确)