28

sql语句中的括号有什么作用?

例如,在声明中:

插入 table1 ([columnname1], columnname2) 值 (val1, val2)

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

4

8 回答 8

45

[] 标记标识符的分隔符,因此如果您有一个名称包含空格的列,例如 Order Qty,您需要用 [] 将其括起来,例如:

select [Order qty] from [Client sales]

它们还用于转义用作标识符的保留关键字

于 2008-09-30T16:32:06.380 回答
14

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

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

Microsoft SQL Server 使用方括号,但这不是 SQL 用于分隔标识符的语法标准。标准情况下,应使用双引号作为分隔符。

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

SET QUOTED_IDENTIFIER ON;
于 2008-09-30T18:49:55.347 回答
6

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

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

INSERT INTO test VALUES('abc')

SELECT [select] FROM test
于 2008-09-30T16:32:05.007 回答
3

它们允许您在列、表等名称中使用关键字(例如date )...

由于这是一种不好的做法,因此通常不包括在内。您应该看到它们被使用的唯一地方是那些从不知道更好的 sql 查询开始的人。除此之外,它们只会使您的查询变得混乱。

于 2008-09-30T16:40:36.767 回答
2

括号内的任何内容都被视为单个标识符(例如 [test machine]。这可用于将名称与空格括起来或转义保留字(例如 [order]、[select]、[group])。

于 2008-09-30T16:34:25.237 回答
1

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

于 2013-03-12T19:51:08.693 回答
1

当表名或文件名带有空格或破折号 (-) 等时...您会收到“FROM 子句中的系统税错误”。使用 [] 括号来解决这个问题。

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

于 2016-01-27T08:18:09.520 回答
0

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

insert into [Table One] ([Column Name 1], columnname2) values (val1, val2)
于 2008-09-30T16:33:22.163 回答