日期:2014-05-17 浏览次数:20497 次
在修改一条数据时,如果数据内已存在,则不管 否则累加 例如: 表T: id name 1 aa,bb 2 cc 3 4 aa 我在修改这个表的数据时,如果name里已存在“aa”,则不管,否则修改,修改后的数据如下 id name 1 aa,bb 2 cc,aa 3 aa 4 aa
if not exists (select 1 from tableName where charIndex('aa',name)>0) update tableName set name=name+',aa' -类似的写,今晚酒喝多了,忘记函数与名字了
------解决方案--------------------
update tableName set
name=case when isnull(name,'')='' then 'aa' else name+',aa' end
where name not like '%aa%'
------解决方案--------------------
;with c1 as
(
select 1 'id', 'aa,bb' 'name' union all
select 2, 'cc' union all
select 3, '' union all
select 4, 'aa'
) --测试数据
select id,
CASE WHEN LTRIM(name) = '' THEN 'aa' --当name为空字符串的处理
WHEN CHARINDEX('aa', name) <> 0 THEN name
ELSE name + ',aa' END 'name' --将',aa'追加到字段后面
from c1
id name
----------- --------
1 aa,bb
2 cc,aa
3 aa
4 aa
(4 row(s) affected)