SQL Server在[]和'之间有什么区别? '

时间:2018-03-10 18:09:52

标签: sql sql-server

[]和'之间的实际区别是什么? '我问,因为当我写这个查询时,我无法写

SELECT *
FROM 'Order Details' 
WHERE OrderID = 11077

唯一的可能性是

SELECT *
FROM [Order Details] 
WHERE OrderID = 11077

但我可以重命名AS 'some name for column'为什么' '有时是错的吗?

我正在使用Northwind示例数据库。

3 个答案:

答案 0 :(得分:2)

单引号表示字符串文字,而方括号[..] - SQL Server / T-SQL特定)或双引号(ANSI / ISO SQL标准)可以用空格("Order Items")包含表(或列)名称,或者用数字开头的名称(而不是像[1998 Sales]那样的字符)。

所以你也应该能够使用它:

SELECT *
FROM "Order Details"
WHERE OrderID = 11077

答案 1 :(得分:0)

避免使用表/列名称中的spacess。需要括号,当表名中有空格时,Sqlserver会认为它是2个不同的单词。

当我们使用保留字或字符串作为列/表名时,我们需要方括号。

  

分隔标识符

     

用双引号(")或括号([])括起来。符合标识符格式规则的标识符可能会也可能不会被分隔。

请看同一个问题的答案:

What is the use of the square brackets [] in sql statements?

Meaning of square brackets [] in MS-SQL table designer?

https://dba.stackexchange.com/questions/21779/sql-server-2012-is-putting-brackets-around-table-and-column-names

答案 2 :(得分:0)

这是示例

select [first Name], [last name] from tablename where [last name]='name'

[]用于在列中的两个单词之间添加空格,如上面的[last name]

''用于字符串或以'name'之类的字符串执行查询,并在参数中使用完整查询,如

declare @perameter1
set @perameter= ('select * from tablename where name like =''name''')