我需要delete
all rows
在一些table
where
值是空字符串。(我有多个名称相似的表)。
我尝试执行字符串中的sql语句:
DECLARE @sql AS NVARCHAR(MAX)
DECLARE @emptyValue AS NVARCHAR(1) =''
set @sql = N'DELETE FROM SampleTable WHERE Value='+@emptyValue+''
exec sp_executesql @sql
但这让我犯了错误Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '='.
我现在试着弄清楚大约一个小时。
任何帮助,将不胜感激。
Edit:
Here's what I get after deleting last quota. @tableName
is nvarchar(MAX)
.
而不是进行字符串连接,参数化 http://technet.microsoft.com/en-us/library/ms175170%28v=sql.105%29.aspx打电话给sp_executesql
,出于 Sql 注入和其他原因(包括缓存查询计划,并且不必担心转义引号:-):
DECLARE @sql AS NVARCHAR(MAX);
DECLARE @emptyValue AS NVARCHAR(1) ='';
set @sql = N'DELETE FROM SampleTable WHERE Value=@emptyValue';
exec sp_executesql @sql, N'@emptyValue NVARCHAR(1)', @emptyValue = @emptyValue;
Fiddle http://sqlfiddle.com/#!6/5007c/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)