我安装了 SQL Server 2008 Express Edition,这是我第一次运行 SQL 查询。我注意到,如果我选择显示前 1000 行,查询会在数据库名称及其各自的列周围放置方括号 []。
- 为什么在数据库和列的名称周围有方括号?
- 是否需要这些,如果需要,什么时候?
最佳答案
我刚刚在 dba.stack 上发布了这个答案。
它们对不“友好”的名称进行转义 - 如果您的数据库名称包含特殊字符(例如空格、点或破折号)或表示 SQL 关键字(例如 USE
或 数据库
:-))。如果没有方括号,这样的查询将失败:
SELECT column FROM database.dbo.table;
但是,如果您以这种方式编写查询,关键字将被忽略:
SELECT [column] FROM [database].dbo.[table];
在构建脚本或编写从元数据生成脚本的解决方案时(例如,生成所有表或所有索引的脚本),我总是将实体名称括在方括号中,这样无论实现了什么样的古怪名称,它们都能正常工作(我并不总是为我控制的系统这样做)。您可以使用 QUOTENAME
函数轻松完成此操作,例如:
SELECT QUOTENAME('table'), QUOTENAME('column'), QUOTENAME('database');
结果:
[table] [column] [database]
如果您在此处搜索我对 QUOTENAME
的回答,您会发现我在很多脚本中都使用了它,我在这些脚本中帮助人们自动生成脚本或构建动态 SQL。如果没有方括号,很多人会在运行脚本时遇到问题。
关于sql - 在 SQL Server 2008 中运行查询时是否需要包含方括号 []?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9217002/