通过解码更新查询

时间:2014-10-31 17:03:29

标签: mysql sql oracle11g

我有一张城市表。我必须用pune和pune代替indore indore

city                             output table
-----                            ------------
indore                            pune
pune                              indore
indore                            pune 
pune                              indore
indore                            pune

1 个答案:

答案 0 :(得分:1)

有两种方式,DECODECASE表达。

1.使用DECODE

select decode(city, 'indore', 'pune', 'pune', 'indore', city) from table

2.使用CASE

select case 
               when city = 'indore' 
                   then 'pune'
               when city = 'pune' 
                   then 'indore'
               else city
            end

我不明白你的意思是替换。你想做update还是只想这样表现?无论如何,如果你想显示,查询将完美地工作。要进行更新,您需要将其转换为更新语句。

编辑关于OP的新请求。

您无法在更新语句中使用decode。但是,您可以使用MERGE声明。

MERGE INTO table a
USING (
select city, decode(city, 'indore', 'pune', 'pune', 'indore', city) city_decode
   from table) b
ON (a.city = b.city)
   WHEN MATCHED 
   THEN
      UPDATE SET a.city = b.city_decode
/