sql语句中的[]括号

时间:2020-03-06 14:55:58  来源:igfitidea点击:

括号在sql语句中做什么?

例如,在语句中:

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

另外,如果表名放在方括号中,该怎么办?

解决方案

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

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

INSERT INTO test VALUES('abc')

SELECT [select] FROM test

[]标记了标识符的定界符,因此,如果我们有一列名称包含空格(如订购数量)的列,则需要用[]括起来,例如:

select [Order qty] from [Client sales]

它们还可以逃避用作标识符的保留关键字

它们只是分隔符,使我们可以在列或者表名称中放入特殊字符(如空格)
例如

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

括号内的所有内容均视为单个标识符(例如[test machine]。可用于用空格括起名称或者转义保留字(例如[order],[select],[group])。

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

由于这是一种不好的做法,因此通常不包括在内。我们应该看到它们被使用的唯一地方是开始使用sql查询的人,他们对此一无所知。除此之外,它们只会使查询混乱。

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

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

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

在Microsoft SQL Server中,可以启用一种模式,以将标准双引号用于定界符,如下所示:

SET QUOTED_IDENTIFIER ON;