通过只访问一次记录来更新。

时间:2015-12-17 01:22:29

标签: sql oracle

sql update取决于当前值。代码的表(id,颜色,代码)值是(a,b,c,...)如何在不多次访问记录的情况下将所有a更改为AA,将c更改为CC。

我认为它就像获取每种颜色的代码一样,如果是 - > AA和如果c - > CC

4 个答案:

答案 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)