在字符串SQL中添加'

Cav*_*n42 0 sql sql-server

我在向字符串添加字段时遇到问题.现在我有一个存储过程在一个巨大的字符串上运行(''内的所有内容)但是我在创建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)