sql update取决于当前值。代码的表(id,颜色,代码)值是(a,b,c,...)如何在不多次访问记录的情况下将所有a更改为AA,将c更改为CC。
我认为它就像获取每种颜色的代码一样,如果是 - > AA和如果c - > CC
答案 0 :(得分:4)
使用Case statement
update yourtable
set code = case code when 'a' then 'AA'
when 'c' then 'CC'
END
Where code in('a','c')
答案 1 :(得分:1)
这是一个有趣的选择:
update t
set code = upper(code) || upper(code)
where code in ('a', 'c');
答案 2 :(得分:0)
如果您只想访问每条记录一次,您可以使用两个单独的更新:
UPDATE YOURTABLE
SET CODE = 'AA'
WHERE CODE = 'a'
和
UPDATE YOURTABLE
SET CODE = 'CC'
WHERE CODE = 'c'
这只访问要更新一次的记录。
祝你好运。
答案 3 :(得分:0)
只是另外一个选择,您也可以这样做:
UPDATE TABLE SET CODE = RPAD(CODE,LENGTH(CODE)*2,UPPER(CODE)) WHERE CODE IN ('a','b')
这会将代码更新为当前值的两倍,因此这也是更新长度不同的代码的理想选择(例如,ab将变为ABAB,abb变为ABBABB)