日期:2014-05-19  浏览次数:20439 次

没有出错,但就是没有更新,请大家帮忙
declare   @dd   varchar(500)
set   @dd= ',38,37,34, '
update   datadoc   set   isdel=convert(int, '1 ')   where   charindex(convert(nvarchar,50,dicid),@dd)> 0
select   *   from   datadoc  
---------------------
以上代码想把表datadoc中dicid为38   37   34   的三条记录设置为isdel=1   也就是已删除的意思,我放在查询分析器运行,为什么不出错,但又没有更新,不知为何,请大家帮忙



------解决方案--------------------
set @dd= '38 '
update datadoc set isdel=1 where dicid=@dd

------解决方案--------------------
測試OK的

declare @dd varchar(500)
set @dd= ',38,37,34, '
update datadoc set isdel=convert(int, '1 ') where charindex(Cast(dicid As Varchar(50)),@dd)> 0
select * from datadoc
------解决方案--------------------
update datadoc set isdel=convert(int, '1 ') where charindex(convert(nvarchar(50),dicid),@dd)> 0
------解决方案--------------------
set @dd= ',38,37,34, '
update datadoc set isdel=convert(int, '1 ') where charindex(Cast(dicid As Varchar(50)),@dd)> 0
select * from datadoc
==========================================================
关键在这个返回的所在列位置
charindex(Cast(dicid As Varchar(50)),@dd)> 0

没看出有错出来```嘎嘎``又学了一招