sql语句中的[]括号

Ada*_*man 27 sql ms-access

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

例如,在声明中:

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

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

alb*_*ein 43

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

select [Order qty] from [Client sales]
Run Code Online (Sandbox Code Playgroud)

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


Bil*_*win 13

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

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

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

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

SET QUOTED_IDENTIFIER ON;
Run Code Online (Sandbox Code Playgroud)

  • 即使使用引号或括号,SQL Server中的名称也不一定区分大小写; 它取决于服务器或数据库排序规则.此外,括号不是SQL Server独有的; 他们也在Sybase. (2认同)
  • 谢谢,Sybase支持括号是有道理的,因为它和SQL Server曾经是相同的代码库. (2认同)
  • 方括号是否适用于MS Access以及SQL Server? (2认同)

Jor*_*ira 6

它们旨在转义保留关键字或无效列标识符.

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

INSERT INTO test VALUES('abc')

SELECT [select] FROM test
Run Code Online (Sandbox Code Playgroud)