动态SQL查询:将所有单引号替换为双引号

时间:2017-03-23 04:14:48

标签: sql sql-server-2008-r2

我有一个动态SQL查询,并且正在传递一些参数,例如

Set @SQL = 'Update Table1 Set Status = 1 Where ' +
'Name = ''' + Cast(@Name As Varchar(50)) + '''' +
' Product = ''' + Cast(@Product As Varchar(50)) + ''''

我在param中传递的单引号存在问题。如果@Name和@Product根本没有单引号,我就不会有任何问题。但有时@Name或@Product会有单引号,导致无法执行我的动态查询,因为它没有正确格式化,因为额外的单引号。

除了@Name和@Product之外,我还有更多的参数,除非有必要,否则我不希望为每个参数执行REPLACE(@Name, '''','''''')之类的操作。

有没有办法可以在执行或更好的替代方案之前将每个单引号替换为动态查询的两倍?

1 个答案:

答案 0 :(得分:0)

另类但更努力的工作:

Set @SQL = 'Update Table1 Set Status = 1 Where ' +
'Name = Cast(@Name As NVarchar(50)) ' +
' Product = Cast(@Product As NVarchar(50)) '

EXEC sp_executesql @SQL , N'@Name NVARCHAR(50), @Product NVARCHAR(50)', @Name, @Product

请告诉我,如果这对您有用吗?