sql sp_sqlexec在语句中处理单引号

时间:2015-01-29 21:36:57

标签: sql sql-server tsql

我正在使用sp_sqlexec并想知道如何处理语句字符串'问题'中的单引号

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

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

3 个答案:

答案 0 :(得分:3)

您可以使用单引号'转义它们:

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

SQLFiddle

答案 1 :(得分:2)

双单引号转到单引号:

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

答案 2 :(得分:1)

比处理这些额外的引号更好,您可以更改动态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