过去一小时我一直在寻找这个,但是没有找到任何可能的迹象。
在Oracle中,能够以以下形式执行嵌套引号:
Set @variable = q'[ *big sql block here* ]'
有了这个,您不必担心在动态/静态查询中转义每个字符串和行等。
但是对于SQL Server,我已经搜索过,唯一可用的选项似乎是双引号/撇号。
有什么想法吗?
欣赏它并道歉如果之前有人问过 - 但是使用我的搜索参数我找不到任何东西(也许我只是没有使用正确的行话)。
答案 0 :(得分:4)
SQL Server没有这样的扩展功能。它使用双标准的ANSI标准机制。
如果要创建动态SQL,可以考虑使用参数而不是嵌入字符串。所以,而不是:
set @sql = 'select this from that where foo = ''bar''';
exec(@sql);
使用:
set @sql = 'select this from that where foo = @bar';
exec sp_executesql @sql, N'@bar varchar(255)', @bar='bar';
这可能无法满足所有可能的需求,但它可以简化您的代码并使其更具可读性。