sql语句中的[]括号

时间:2008-09-30 16:30:49

标签: sql ms-access

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

例如,在声明中:

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

另外,如果表名在括号中,它会怎么做?

8 个答案:

答案 0 :(得分:43)

[]标记标识符的分隔符,因此如果您的列名称包含Order Qty等空格,则需要将其括在[]中,如:

select [Order qty] from [Client sales]

它们也是为了逃避用作标识符的保留关键字

答案 1 :(得分:13)

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

  • SQL保留字:“订单”
  • 包含空格的单词:“Order qty”
  • 包含标点符号的字词: “订单数量”
  • 包含国际的单词 字符
  • 列名称 区分大小写:“订单”与“订单”

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

在Microsoft SQL Server中,您可以启用模式以使用标准双引号作为分隔符,如下所示:

SET QUOTED_IDENTIFIER ON;

答案 2 :(得分:5)

它们旨在逃避保留关键字或无效列标识符。

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

INSERT INTO test VALUES('abc')

SELECT [select] FROM test

答案 3 :(得分:2)

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

由于这是一个不好的做法,因此通常不包括它们。你应该看到它们被使用的唯一地方是人们开始使用不知道更好的SQL查询。除此之外,他们只是弄乱你的查询。

答案 4 :(得分:1)

括号内的任何内容都被视为单个标识符(例如[test machine]。这可以用于用空格包含名称或者用于保留单词(例如[order],[select],[group])。

答案 5 :(得分:0)

它们只是分隔符,允许您在列或表名中放置特殊字符(如空格) 例如

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

当表名或文件名包含空格或短划线( - )等时,您可以收到“FROM子句中的Systax错误”。 使用[]括号来解决此问题。

请参阅:https://msdn.microsoft.com/en-us/library/ms175874.aspx