如何修改SQL Server 2019中QUOTENAME的默认分隔符为单引号?
解决QUOTENAME默认分隔符改为单引号的问题
SQL Server内置的QUOTENAME函数默认分隔符是硬编码的方括号,无法直接修改其默认行为。要实现默认使用单引号且无需每次传参的需求,最直接的方案是创建自定义标量函数来封装QUOTENAME。
方案1:固定默认单引号的自定义函数
创建一个只接收字符串参数的函数,内部调用QUOTENAME时指定单引号作为分隔符:
CREATE FUNCTION dbo.QUOTENAME_SingleQuote ( @UnquotedString NVARCHAR(128) ) RETURNS NVARCHAR(258) AS BEGIN RETURN QUOTENAME(@UnquotedString, '''') END GO
使用时直接传入字符串即可,无需指定分隔符:
SELECT dbo.QUOTENAME_SingleQuote('test string') -- 返回 'test string'
方案2:支持可选分隔符的重载函数
如果偶尔需要使用其他分隔符,可以创建带可选参数的函数,默认值设为单引号:
CREATE FUNCTION dbo.QUOTENAME_Custom ( @UnquotedString NVARCHAR(128), @QuoteCharacter NCHAR(1) = '''' ) RETURNS NVARCHAR(258) AS BEGIN RETURN QUOTENAME(@UnquotedString, @QuoteCharacter) END GO
使用示例:
- 默认用单引号:
SELECT dbo.QUOTENAME_Custom('test string') - 临时改用方括号:
SELECT dbo.QUOTENAME_Custom('test string', '[')
注意事项
- 自定义函数需在目标数据库下创建,调用时记得带上架构名(如
dbo.); - 若函数涉及跨数据库调用,需指定完整的
数据库名.架构名.函数名格式; - 函数的参数长度和返回值长度与原生
QUOTENAME保持一致,确保兼容性。
内容的提问来源于stack exchange,提问作者FirstByte
相关产品推荐
相关产品推荐

