2008-09-30 105 views
24

括号在sql语句中做了什么?[]括号在sql语句中

例如,在语句:

insert into table1 ([columnname1], columnname2) values (val1, val2)

而且,它有什么作用,如果表名是在括号?

+0

重复的问题:http://stackoverflow.com/questions/52898/sql-syntax-curiousity就这一个,虽然 – bdukes 2008-09-30 16:33:41

+4

更好的标题。谁在第一次遇到括号时会搜索“好奇”? – Shog9 2008-09-30 16:39:07

回答

39

的[]标记的标识符的划分,所以如果你有他的名字中包含空格,如订单数量,你需要用[]喜欢将其包含在列:

select [Order qty] from [Client sales] 

他们也转义用作标识符的保留关键字

5

它们用于转义保留关键字或无效列标识符。

CREATE TABLE test 
(
    [select] varchar(15) 
) 

INSERT INTO test VALUES('abc') 

SELECT [select] FROM test 
0

它们仅仅是允许您在列或表名 中添加特殊字符(如空格)的分隔符,例如括号内

insert into [Table One] ([Column Name 1], columnname2) values (val1, val2) 
1

任何被认为是一个单一的标识符(例如[试验机。这可以使用具有空间以包围名称或逃避保留字(例如,[指令],[选择],[基团] )。

2

它们允许你在列,表等的名称中使用的关键字(如日期)...

由于这是一个不好的做法,首先,他们一般都不会包括,你应该看到他们使用的唯一的地方是人们开始与SQL查询不知道任何更好的他们只是混淆了你的查询。

12

这是“分隔标识符”的Microsoft SQL Server非标准语法。 SQL支持分隔符标识符,以允许表名,列名,或其他元数据对象,以包含以下内容:

  • SQL保留字:“订单”包含空格
  • 单词:“订货量”
  • 词含标点符号: “订单数量”含国际 字符
  • 列名是 区分大小写
  • 话:“秩序”与“秩序”

Microsoft SQL Server使用方括号,但这不是SQL用于分隔标识符的语法标准。通常,双引号应该用于分隔符。

在Microsoft SQL Server,你可以启用的模式使用标准双引号定界符如下:

SET QUOTED_IDENTIFIER ON; 
0

,如果你使用任何列名是相同的SQL任何保留的关键字,在您可以将列名放在方括号中以区分您的自定义列名和现有保留关键字。