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

sql 字段内容累加
SQL code
在修改一条数据时,如果数据内已存在,则不管  否则累加
例如:
表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


------解决方案--------------------
>
SQL code

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)