我在将字段添加到字符串时遇到问题。现在我有一个存储过程在一个巨大的字符串上运行(''里面的所有东西)但是我在创建Where
语句时遇到了问题。
我有:
' Cast(Name AS varchar(max)) NOT IN (''Jimmy' + CHAR(39) + 's'')'
但是我收到了一个错误CHAR(39)
。我怎样才能有效地使它看起来像Jimmy's
在字符串内部?我知道这可能是一个愚蠢的修复,但请帮忙。
我在将字段添加到字符串时遇到问题。现在我有一个存储过程在一个巨大的字符串上运行(''里面的所有东西)但是我在创建Where
语句时遇到了问题。
我有:
' Cast(Name AS varchar(max)) NOT IN (''Jimmy' + CHAR(39) + 's'')'
但是我收到了一个错误CHAR(39)
。我怎样才能有效地使它看起来像Jimmy's
在字符串内部?我知道这可能是一个愚蠢的修复,但请帮忙。
您需要再次将其加倍,因为撇号必须在两轮定界符中幸存下来。尝试:
' Cast(Name AS varchar(max)) NOT IN (''Jimmy''''s'')'
例如,比较:
DECLARE @sql NVARCHAR(255) = N'SELECT ''Jimmy' + CHAR(39) + ''';';
EXEC sp_executesql @sql;
Msg 105, Level 15, State 1, Line 1
字符串 'Jimmy';' 后面的非闭合引号。
消息 102,级别 15,状态 1,第 1 行
'Jimmy';' 附近的语法不正确。
和这个:
DECLARE @sql NVARCHAR(255) = N'SELECT ''Jimmy''s'';';
EXEC sp_executesql @sql;
Msg 105, Level 15, State 1, Line 1
字符串';'后面的非闭合引号。
最后:
DECLARE @sql NVARCHAR(255) = N'SELECT ''Jimmy''''s'';';
EXEC sp_executesql @sql;
结果:
-------
Jimmy's