DECLARE @SQL Varchar(Max)
DECLARE @DESCR Varchar(Max)
-- Customer enters description into @Descr
SET @SQL = 'Update TableName SET FieldName='''
+ @DESCR
+ ''' WHERE ID=123'
问题是当客户将撇号输入@Descr变量时。
问:在Microsoft SQL Server 2005中,如何用双撇号替换所有叛逆者?
答案 0 :(得分:8)
如果这甚至需要是动态SQL(你所显示的代码没有),那么使用参数化SQL和sp_executesql
来避免SQL注入的可能性。
DECLARE @SQL NVarchar(Max)
DECLARE @DESCR NVarchar(Max)
-- Customer enters description into @Descr
SET @SQL = 'Update TableName SET FieldName=@DESCR WHERE ID=123'
exec sp_executesql @SQL, N'@DESCR NVarchar(Max)', @DESCR =@DESCR
答案 1 :(得分:4)
不推荐用于生产,但可以使用。
SET @DESCR = REPLACE(@DESCR, '''', '''''')