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;