我在向字符串添加字段时遇到问题.现在我有一个存储过程在一个巨大的字符串上运行(''内的所有内容)但是我在创建Where语句时遇到了问题.
我有:
' Cast(Name AS varchar(max)) NOT IN (''Jimmy' + CHAR(39) + 's'')'
Run Code Online (Sandbox Code Playgroud)
但我得到了一个错误CHAR(39).我怎样才能有效地让它看起来像Jimmy's在字符串里面?我知道这可能是一个愚蠢的修复,但请帮忙.
Aar*_*and 10
你需要再次加倍,因为撇号必须存活两轮分隔符.尝试:
' Cast(Name AS varchar(max)) NOT IN (''Jimmy''''s'')'
Run Code Online (Sandbox Code Playgroud)
例如,比较:
DECLARE @sql NVARCHAR(255) = N'SELECT ''Jimmy' + CHAR(39) + ''';';
EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)
Msg 105,Level 15,State 1,Line 1
字符串'Jimmy'后面的未闭合引号;'.
Msg 102,Level 15,State 1,Line
1'Jimmy'附近的语法不正确;'.
还有这个:
DECLARE @sql NVARCHAR(255) = N'SELECT ''Jimmy''s'';';
EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)
消息105,级别15,状态1,行1
字符串';'后面的未闭合的引号.
最后:
DECLARE @sql NVARCHAR(255) = N'SELECT ''Jimmy''''s'';';
EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)
结果:
-------
Jimmy's
Run Code Online (Sandbox Code Playgroud)