我有以下查询
DECLARE @fNAME varchar(40) = 'Obrain'
DECLARE @query nvarchar(256)
SET @query = 'UPDATE TableName SET columnname = ''' + @fNAME + ''''
select @query
按预期结果
UPDATE TableName SET columnname = 'Obrain'
但是如果我用单引号改变输入@fname
DECLARE @fNAME varchar(40) = 'O''brain'
DECLARE @query nvarchar(256)
SET @query = 'UPDATE TableName SET columnname = ''' + @fNAME + ''''
select @query
如果我遇到单引号问题,我会得到以下结果
UPDATE TableName SET columnname = 'O'brain'
如何通过微小更改修复此查询
最好的方法是什么
答案 0 :(得分:3)
正确的方法吗?使用sp_executesql
和参数:
DECLARE @fNAME varchar(40) = 'O''brain';
DECLARE @query nvarchar(256);
SET @query = '
UPDATE TableName SET columnname = @fNAME'
EXEC sp_executesql @query, N'@fNAME varchar(40)', @fName=@fName;