如何在oracle 11g中编写decode()函数

时间:2013-12-26 19:24:05

标签: sql oracle oracle11g

select city,
case when city in('Tokyo','Toronto')
then 'Pune'
else 'No_change'
end New_City
from locations;

我们如何在oracle的decode()中编写上述查询? oracle 11g中给出的已使用位置表。 我试过但不能成功。 Plz回复。

5 个答案:

答案 0 :(得分:2)

您无法在DECODE()中进行多次检查,就像您在CASE声明中一次性检查“东京”和“多伦多”一样。如果您的列表较长,最好使用CASE语句。

- 抱歉,我不得不添加答案,因为我无法评论:(

答案 1 :(得分:1)

select decode(city, 'Tokyo', 'Pune', 'Toronto', 'Pune', 'No_change') New_City
 from locations

答案 2 :(得分:0)

decode()中,第一个参数是输入。然后有成对的参数将输入值与输出值匹配。然后最后一个参数是默认输出。

select
  city,
  decode(city,
    'Tokyo', 'Pune',
    'Toronto', 'Pune',
    'No_change'
  ) as New_City
from locations;

答案 3 :(得分:0)

解码基本上是“if,then,else”

解码(如果,然后,如果,然后,如果,然后,其他人)

所以..

select (city,'Tokyo','pune','Toronto','pune','No_change')...

或者

select (city,'Tokyo','pune','Toronto','pune',city)...

除非是东京或多伦多,否则不会改变城市。

答案 4 :(得分:0)

SELECT 
               City as Before
              decode( instr(','||'Tokyo,Toronto'||',',  ','||City||','),
                            0,'No_Change', -- probably the `city` column itself?!
                            'Pune') as After
FROM your_table;

不是一个好的计划,限制只有4000个字符! 但是,我只是出于好奇和乐趣而尝试了它!

在之前和之后添加了comma,以便轻松启用搜索并完全匹配!