在字符串SQL中添加'

时间:2013-09-05 14:29:55

标签: sql sql-server

我在向字符串添加字段时遇到问题。现在我有一个存储过程在一个巨大的字符串上运行(''内的所有内容)但是我在创建Where语句时遇到了问题。

我有:

' Cast(Name AS varchar(max)) NOT IN (''Jimmy' + CHAR(39) + 's'')'

但我收到了CHAR(39)的错误。如何有效地使其在字符串中看起来像Jimmy's?我知道这可能是一个愚蠢的修复,但请帮助。

1 个答案:

答案 0 :(得分:10)

你需要再次加倍 ,因为撇号必须能够存活两轮分隔符。尝试:

' 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