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'')'
双单引号转义为单引号:
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
我正在使用 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'')'
双单引号转义为单引号:
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