日期:2014-05-17  浏览次数:20532 次

求一变量使用问题。
declare @abc varchar(1000)
set @abc='ADH00018083,ADH00018103'

declare @def varchar(5000)
set @def=replace(''''+@abc+'''',',',''',''')
这一步其实是想把'ADH00018083,ADH00018103'改变成'ADH00018083','ADH00018103'的格式。

然后
update kkk set ggg=1 where djbh in (@def)

问题在最后update 的时候,djbh in (@def)得不到数据,

而如果我使用select @def 却能得到数据



------解决方案--------------------
这个需要拼接sql语句才能执行了。

你把update kkk set ggg=1 where djbh in (@def)
改写成:
declare @sql varchar(6000) = 'update kkk set ggg=1 where djbh in (' + @def +')'
exec @sql
应该就能执行了。



------解决方案--------------------
动态执行
------解决方案--------------------
探讨

declare @abc varchar(1000)
set @abc='ADH00018083,ADH00018103'
set @abc=replace(@abc,',',''',''')
set @abc=''''+@abc+''''
print @abc

--结果
--'ADH00018083','ADH00018103'

记住拼字符串的时候单引号变为双引号