在ORACLE中使用Decode
Decode实际用途:Decode可以看做是逐值替换,Decode回为某个字段中的每个值在一系列的if/then测试中查找匹配值并返回指定值。
格式:
Decode(value,if1,then1,if2,then2,if3,then3.......,else)
其中value代表表中的一个列(不考虑数据类型)或者一个计算结果(如一个日期减去另一个日子、字符列的substr等)。每一行都对value进行测试,如果value符合条件if1,则decode的结果为then1,以此类推。
事实上,可以构造多对if/then。如果value与任一个if都不符则返回else。
示例:
返回排序结果:
person_key顺序 4 5 6 7
2、case
可以用Case函数代替Decode,case函数关键字when then else 和end说明后面的逻辑路径,通常,与使用等价的Decode相比,使用case函数显得比较繁复,但可以使用程序可读性强,而且更容易延续。
示例:
Sql代码 收藏代码
实现效果和使用decode一样
Decode实际用途:Decode可以看做是逐值替换,Decode回为某个字段中的每个值在一系列的if/then测试中查找匹配值并返回指定值。
格式:
Decode(value,if1,then1,if2,then2,if3,then3.......,else)
其中value代表表中的一个列(不考虑数据类型)或者一个计算结果(如一个日期减去另一个日子、字符列的substr等)。每一行都对value进行测试,如果value符合条件if1,则decode的结果为then1,以此类推。
事实上,可以构造多对if/then。如果value与任一个if都不符则返回else。
示例:
select * from person order by decode(person_key,4,1,5,2,6,3,7,4)
返回排序结果:
person_key顺序 4 5 6 7
2、case
可以用Case函数代替Decode,case函数关键字when then else 和end说明后面的逻辑路径,通常,与使用等价的Decode相比,使用case函数显得比较繁复,但可以使用程序可读性强,而且更容易延续。
示例:
Sql代码 收藏代码
select * from person order by case person_key when 4 then 1 when 5 then 2 when 6 then 3 when 7 then 4 end
实现效果和使用decode一样