2010-09-17 44 views
1
DECLARE @SQL Varchar(Max) 
DECLARE @DESCR Varchar(Max) 

-- Customer enters description into @Descr 
SET @SQL = 'Update TableName SET FieldName=''' 
+ @DESCR 
+ ''' WHERE ID=123' 

問題是客戶在@Descr變量中輸入撇號時。APOSTROPHE DYNAMIC SQL

問:在Microsoft SQL Server 2005中,如何用雙撇號替換所有的同義詞?

回答

7

如果這甚至需要動態SQL(您顯示的代碼沒有),那麼使用參數化SQL和sp_executesql來避免SQL注入的可能性。

DECLARE @SQL NVarchar(Max) 
DECLARE @DESCR NVarchar(Max) 

-- Customer enters description into @Descr 


SET @SQL = 'Update TableName SET [email protected] WHERE ID=123' 

exec sp_executesql @SQL, N'@DESCR NVarchar(Max)', @DESCR [email protected] 
+0

謝謝馬丁!是的,它必須是動態的 - 我不想讓這個例子複雜化。 – 2010-09-17 17:56:05

4

不推薦用於生產,但會起作用。

SET @DESCR = REPLACE(@DESCR, '''', '''''')