Rac*_*hel 16
它们被称为Delimited Identifiers,它们的主要目的是允许在表名中使用特殊字符和关键字/作为表名
例如,某个天才决定我使用的数据库中主表的名称是master
,这是一个关键字。
除了在这些情况下,它们真的根本不需要。
Aar*_*and 11
它们对不“友好”的名称进行转义 - 如果您的数据库名称包含特殊字符(如空格、点或破折号)或代表 SQL 关键字(如 USE 或 DATABASE :-)),它们会很有用。如果没有方括号,这样的查询将失败:
SELECT column FROM database.dbo.table;
Run Code Online (Sandbox Code Playgroud)
但是,如果您以这种方式编写查询,关键字将被忽略:
SELECT [column] FROM [database].dbo.[table];
Run Code Online (Sandbox Code Playgroud)
在构建脚本或编写从元数据生成脚本的解决方案时(例如生成所有表或所有索引的脚本),我总是将实体名称括在方括号中,这样无论实现了什么样的奇怪名称,它们都可以工作(我是对于我控制的系统,并不总是这样做)。您可以使用QUOTENAME
函数轻松完成此操作,例如:
SELECT QUOTENAME('table'), QUOTENAME('column'), QUOTENAME('database');
Run Code Online (Sandbox Code Playgroud)
结果:
[table] [column] [database]
Run Code Online (Sandbox Code Playgroud)
如果您在此处和 Stack Overflow 上搜索我的答案,QUOTENAME
您会发现我在许多脚本中使用它,我正在帮助人们自动化脚本生成或构建动态 SQL。如果没有方括号,很多人会在运行脚本时遇到问题。
归档时间: |
|
查看次数: |
5717 次 |
最近记录: |