创建列名为“返回”的SQL表

时间:2013-09-27 15:21:09

标签: sql sql-server sql-server-2005

我正在尝试使用查询创建以下SQL表:

 create table Return_indiv (Date datetime, issueid varchar(255), Return varchar(255))

如您所见,其中一个列名为“Return”。但是,SQL认为它是函数return,并给出以下错误:

 Msg 156, Level 15, State 1, Line 1
 Incorrect syntax near the keyword 'Return'.
 Msg 195, Level 15, State 10, Line 1
 'varchar' is not a recognized built-in function name.

我能克服这个错误吗?谢谢!

5 个答案:

答案 0 :(得分:6)

您需要在列名称周围添加括号,因为它是关键字:

create table Return_indiv 
(
    Date datetime, 
    issueid varchar(255), 
    [Return] varchar(255)
)

请注意,每次查询表中的那一列(或更新等)时,您还必须使用括号。考虑到这一点,您需要确定是否值得拥有它与保留字同名的列。

另请注意,Date是SQL 2008及更高版本中的关键字 - 因此,如果您计划升级,则还需要转义该列名称。

答案 1 :(得分:5)

稍微澄清一点,Return是数据库中的保留字(可能是函数或其他东西)。因此,您不能将其用作表名,列名等。您可以通过用[]包围它来解决这个问题。但更好的想法是不要在任何对象名称中使用保留字。我无法确定该列中的内容,但也许您可以将其命名为RETURN_VALUE,RETURN_ITEM,等等。只要避免使用保留字,就可以让每个人的生活更轻松。

答案 2 :(得分:4)

将[]放在return关键字

周围
create table Return_indiv (Date datetime, issueid varchar(255), [Return] varchar(255))

答案 3 :(得分:3)

放入括号:

create table #temp ([return] varchar(100))

答案 4 :(得分:1)

Yo应该使用方括号[]来避免解析器将列名理解为关键字。

尽管如此,我建议不要使用关键字来命名列或表。在您理解代码之后,对其他人来说很难。如果其他开发人员不知道ot是关键字,则可能很难理解查询失败的原因,以防出现错误。

试试这个

USE tempdb
GO

CREATE TABLE Return_indiv
(
    [Date]   DATETIME,
    issueid  VARCHAR(255),
    [RETURN] VARCHAR(255)
)