select city,
case when city in('Tokyo','Toronto')
then 'Pune'
else 'No_change'
end New_City
from locations;
我们如何在oracle的decode()
中编写上述查询?
oracle 11g
中给出的已使用位置表。
我试过但不能成功。
Plz回复。
答案 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
,以便轻松启用搜索并完全匹配!