括号在sql语句中做了什么?
例如,在声明中:
insert into table1 ([columnname1], columnname2) values (val1, val2)
另外,如果表名在括号中,它会怎么做?
答案 0 :(得分:43)
[]标记标识符的分隔符,因此如果您的列名称包含Order Qty等空格,则需要将其括在[]中,如:
select [Order qty] from [Client sales]
它们也是为了逃避用作标识符的保留关键字
答案 1 :(得分:13)
这是用于“分隔标识符”的Microsoft SQL Server非标准语法。 SQL支持标识符的分隔符,以允许表名,列名或其他元数据对象包含以下内容:
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错误”。 使用[]括号来解决此问题。