sql sp_sqlexec 处理语句中的单引号

sql sp_sqlexec dealing with single quotes in statement

我正在使用 sp_sqlexec 并且想知道您如何处理语句字符串 'problem'

中的单引号
declare @id int =1
declare @sql nvarchar(200)

set @sql = '
insert into mytable (col1,col2) values (1, 'problem')
'
exec sp_sqlexec @sql

你可以用单引号转义 ':

 set @sql = '
 insert into mytable (col1,col2) values (1, ''problem'')'

SQLFiddle

双单引号转义为单引号:

set @sql = 'insert into mytable (col1,col2) values (1, ''problem'')'

比处理那些额外的引号更好,您可以更改动态 sql 以使用参数。 (注意这是使用 sp_executesql 而不是 sp_sqlexec 因为它允许参数)

declare @id int = 1
declare @sql nvarchar(2000)

declare @col2 varchar(10) = 'problem'

set @sql = 'insert into mytable (col1, col2) values (1, @col2)'

exec sp_executesql @sql, N'@Col2 varchar(10)', @col2 = @col2