QUOTENAME 函数
QUOTENAME 是 SQL Server 中的一个内置函数,用于为字符串加上指定的定界符(默认为方括号 [ ]),以便在查询中引用数据库对象名称或其他字符串。该函数非常有用,特别是在处理数据库对象名称(如表名、列名)包含特殊字符或保留字时。
语法
sql
QUOTENAME(string, [delimiter]) string: 要加上定界符的字符串。delimiter: (可选)用于包围字符串的定界符。默认为方括号'[' 和 ']'。它可以是一个单字符,如"'"(单引号)或"\""(双引号)。
使用示例
1. 使用默认定界符(方括号)
如果不指定定界符,QUOTENAME 默认会使用方括号 [ ]。
sql
SELECT QUOTENAME('apple') AS Result; 结果:
csharp
[2. 使用单引号作为定界符
你可以指定一个不同的定界符,例如单引号 '。
sql
SELECT QUOTENAME('banana', '''') AS Result; 结果:
arduino
'banana' 3. 使用双引号作为定界符
你可以使用双引号 " 作为定界符。
sql
SELECT QUOTENAME('cherry', '"') AS Result; 结果:
arduino
"cherry" 4. 在动态 SQL 中使用 QUOTENAME
QUOTENAME 常用于动态 SQL 查询中,以防止 SQL 注入或错误引用。
sql
DECLARE @TableName NVARCHAR(128) = 'MyTable'; DECLARE @Sql NVARCHAR(MAX); -- 使用 QUOTENAME 确保表名正确地被引用 SET @Sql = 'SELECT * FROM ' + QUOTENAME(@TableName); EXEC sp_executesql @Sql; 注意事项
- 最大长度:
QUOTENAME函数接受的字符串长度最大为 128 个字符。如果超过这个长度,将返回NULL。 - 安全性:使用
QUOTENAME可以帮助防止 SQL 注入,因为它会自动处理定界符中的特殊字符。 - 仅一个字符的定界符:定界符只能是一个字符。如果传入多个字符,
QUOTENAME只会使用第一个字符。
总结
QUOTENAME 是一个简单但强大的函数,用于为字符串添加定界符(如方括号、单引号、双引号),特别在引用包含特殊字符的数据库对象名称或构建动态 SQL 语句时非常有用。

浙公网安备 33010602011771号