SQL 服务器嵌套引号 - 怎么办?
SQL Server nested quotes - how to?
过去一个小时我一直在寻找这个,但找不到任何可能的迹象。
在 Oracle 中,可以使用以下形式进行嵌套引号:
Set @variable = q'[ *big sql block here* ]'
有了这个,您不必担心在 dynamic/static 查询等中转义每个字符串和行。
但是对于 SQL 服务器,我搜索过并且唯一可用的选项似乎是双 quotation/apostrophe。
有什么想法吗?
非常感谢,如果之前有人问过这个问题,我深表歉意 - 但使用我的搜索参数我找不到任何关于这个的东西(也许我只是没有使用正确的行话)。
SQL服务器没有这样的扩展功能。它使用双单引号的 ANSI-standard 机制。
如果您正在创建动态 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';
这可能无法满足所有可能的需求,但它可以简化您的代码并使其更具可读性。
过去一个小时我一直在寻找这个,但找不到任何可能的迹象。
在 Oracle 中,可以使用以下形式进行嵌套引号:
Set @variable = q'[ *big sql block here* ]'
有了这个,您不必担心在 dynamic/static 查询等中转义每个字符串和行。
但是对于 SQL 服务器,我搜索过并且唯一可用的选项似乎是双 quotation/apostrophe。
有什么想法吗?
非常感谢,如果之前有人问过这个问题,我深表歉意 - 但使用我的搜索参数我找不到任何关于这个的东西(也许我只是没有使用正确的行话)。
SQL服务器没有这样的扩展功能。它使用双单引号的 ANSI-standard 机制。
如果您正在创建动态 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';
这可能无法满足所有可能的需求,但它可以简化您的代码并使其更具可读性。