35

我通过这样做创建了这个名为 LOCATION 的表:

CREATE TABLE LOCATION(
POSTCODE VARCHAR(10) PRIMARY KEY,
STREET_NAME VARCHAR(20),
CITY VARCHAR(20));

当我尝试在表格中添加一些日期时,它不起作用说有错误

INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FRANCE');

错误是说

此处不允许列

4

13 回答 13

59

您在第一个值周围缺少引号,应该是

INSERT INTO LOCATION VALUES('PQ95VM', 'HAPPY_STREET', 'FRANCE');

顺便说一句,出于可读性、可维护性和稳健性的原因,建议您在 INSERT 中明确指定列名,即

INSERT INTO LOCATION (POSTCODE, STREET_NAME, CITY) VALUES ('PQ95VM', 'HAPPY_STREET', 'FRANCE');
于 2012-05-08T15:21:46.073 回答
5

有时,在执行插入查询时,我们面临:

此处不允许列

错误。因为字符串参数中可能缺少引号。在字符串参数中添加引号并尝试执行。

尝试这个:

INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');

或者

INSERT INTO LOCATION (ID, FIRST_NAME, LAST_NAME) VALUES('PQ95VM','HAPPY_STREET','FRANCE');

http://www.drtuts.com/oracle-error-column-not-allowed-here/

于 2016-09-16T15:04:23.850 回答
4

INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FRANCE');

上面提到的代码不正确,因为您的第一个参数 POSTCODE 是 type VARCHAR(10)。你应该用过' '.

尝试INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');

于 2017-10-16T04:44:24.557 回答
3

就像 Scaffman 说的 - 你缺少引号。始终在将值传递给varchar2时使用引号

INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');

所以一个(')开始字符串,第二个(')关闭它。

但是,如果您想在字符串中添加引号符号,例如:

我父亲告诉我:'你必须勇敢,儿子'。

您必须使用三引号符号,例如:

“我父亲告诉我:‘你必须勇敢,儿子’。”

*添加报价方法可能因不同的数据库引擎而异

于 2013-05-29T11:14:19.353 回答
2

您错过的是" "邮政编码,因为它是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.

于 2016-07-28T03:09:22.723 回答
1

我犯了使用错误引号的错误。我在值列表中使用双引号作为字符串分隔符,而不是单引号。

INSERT INTO MYUSERS VALUES( 'Name', "Surname");  // Wrong

INSERT INTO MYUSERS VALUES( 'Name', 'Surname'); // Correct, Surname must be in single quotes
于 2021-11-07T18:12:54.363 回答
0

如果我们在输入变量名时犯了一些拼写错误,就会出现这个错误。就像在存储过程中一样,我有变量名 x 并且在我正在使用的插入语句中

insert into tablename values(y);

它将抛出此处不允许的错误列。

于 2013-05-29T06:52:52.007 回答
0

尝试使用 varchar2 而不是 varchar 并使用它:

INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');

于 2020-09-13T07:30:36.897 回答
0

我在使用插入命令时也遇到了同样的错误。当我用单引号替换双引号时,它工作正常

于 2021-04-07T06:57:14.653 回答
0
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();

连接字符串 时不要错过添加'"----"'

于 2018-10-16T16:14:50.267 回答
0

在插入数据时,我们必须使用字符串分隔符 ( ' ')。而且,您在插入值时错过了它(' '),这是您的错误消息的原因。代码修正如下:

INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FRANCE');
于 2020-12-27T12:46:24.880 回答
0

如果PQ95VM应该是文字字符串,则使用'PQ95VM'. 如果它是一个变量,请确保它已被声明。

于 2021-11-16T11:34:34.000 回答
0

将双引号 (" ") 转换为单引号 (' ')

例子

如果你有这样的事情:

INSERT INTO clients (id, email, country)
VALUES (1, "john@gmail.com", "USA");

将其转换为:

INSERT INTO clients (id, email, country)
VALUES (1, 'john@gmail.com', 'USA');
于 2021-04-26T14:20:37.467 回答