"在END"或附近的语法错误;列名为END

时间:2014-03-28 07:14:37

标签: postgresql

我在MYSQL中有一个表,必须在postgresql中转换它。

我使用以下命令创建表。

create table emp(COMPLETE BOOLEAN NOT NULL, END BOOLEAN NOT NULL);

错误,我得到的是

  

命令行出错:27列:1错误报告 - SQL错误:错误:   “END”或附近的语法错误位置:45

但是如果我将列名END更改为END1,那么它可以正常工作。

create table emp(COMPLETE BOOLEAN NOT NULL, END1 BOOLEAN NOT NULL);

请建议一种方法,我可以使用END创建列的名称。

4 个答案:

答案 0 :(得分:4)

END是一个关键字。 (除其他外,它在CASE ... WHEN ... END中使用)。您必须引用它以将其用作标识符。

create table emp(complete BOOLEAN NOT NULL, "end" BOOLEAN NOT NULL);

请注意,"quoted"标识符区分大小写,它们不是大小写,就像不带引号的标识符一样。这符合SQL标准。有关详细信息,请see the PostgreSQL documentation on lexical structure

有一个list of reserved words in the documentation

答案 1 :(得分:1)

使用关键字作为表名时会出现问题。最好的方法是使用其他一些名称。

答案 2 :(得分:0)

请为您的列选择其他名称,因为END是关键字。我们不能使用与关键字相同的列名。

答案 3 :(得分:0)

您正在使用SQL保留字作为变量名。为了您的最大便携性 数据管理器之间的应用程序,您不应使用此列表中的任何保留字 作为文件类或变量名。 你甚至可以使用_END,END1 ...... 这是SQL的保留字列表。 http://www.tigerlogic.com/tigerlogic/omnis/download/manuals/SQLReservedWords.pdf