我正在尝试使用查询创建以下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.
我能克服这个错误吗?谢谢!
答案 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)
)