我试图在我的update语句中使用变量,但是由于某些原因,我不明白它会导致错误。
以下代码有效:
declare @sql nvarchar(max)
set @sql='update valuetable set waarde=(select top 1 firstname from DimEmployee where firstname not like ''%[0-9]%'' )'
exec (@sql)
如果我使用以下代码将firstname和DimEmployee更改为变量:
declare @column nvarchar(max);
declare @table nvarchar(max);
declare @sql nvarchar(max)
set @column='firstname';
set @table='dbo.dimEmployee'
set @sql='update valuetable set waarde=(select top 1 '+ @column + 'from '+@table+' where '+@column+' not like ''%[0-9]%'')'
exec (@sql)
它给出以下错误:'。'附近的语法不正确。在第1行
有人可以向我解释我在做错什么,是否有解决我的问题的方法?
答案 0 :(得分:1)
您应该打印出SQL以查看实际运行的内容。例如,很明显,from
前缺少空格是一个问题:
set @sql = '
update valuetable
set waarde = (select top 1 '+ @column + ' from ' + @table + ' where ' + @column + ' not like ''%[0-9]%'')
';