oracle decode函数
2015-06-19 17:48
471 查看
含义解释:
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3)
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多
使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2)
from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
select Name,decode(subject,'语文',1,'数学',2,'英语',3) 科目代码 from student;
select Name,decode(Subject,'语文',1,'数学',2,3) 科目代码 from student;
3,order by对字符列进行特定的排序
大家还可以在Order by中使用Decode。
例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。
select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)
转列:
select
Name,
sum(decode(Subject,'语文',Result)) 语文,
sum(decode(Subject,'数学',Result)) 数学,
sum(decode(Subject,'英语',Result)) 英语
from student
group by Name;
select
Name,
decode(Subject,'语文',Result,0) 语文,
decode(Subject,'数学',Result,0) 数学,
decode(Subject,'英语',Result,0) 英语
from student
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3)
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多
使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2)
from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
select Name,decode(subject,'语文',1,'数学',2,'英语',3) 科目代码 from student;
select Name,decode(Subject,'语文',1,'数学',2,3) 科目代码 from student;
3,order by对字符列进行特定的排序
大家还可以在Order by中使用Decode。
例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。
select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)
转列:
select
Name,
sum(decode(Subject,'语文',Result)) 语文,
sum(decode(Subject,'数学',Result)) 数学,
sum(decode(Subject,'英语',Result)) 英语
from student
group by Name;
select
Name,
decode(Subject,'语文',Result,0) 语文,
decode(Subject,'数学',Result,0) 数学,
decode(Subject,'英语',Result,0) 英语
from student
相关文章推荐
- Oracle 分页查询
- Oracle 临时集合
- Oracle 12c pdb自动启动
- Oracle Flashback技术总结
- Oracle WITH语句的使用
- Oracle误删一个表数据的恢复方案
- Oracle性能优化之选择最有效率的表名顺序
- oracle 数据库缩减char类型 字段长度
- Oracle 数据类型转换
- Oracle 10g/11g 导入导出整理
- oracle 表查询(2)
- oracle top 语句(转)
- Oracle union用法
- Msdao15调用oracle存储过程
- Oracle10g 回收站及彻底删除table
- Oracle中TO_DATE格式
- [DB] oracle删除重复数据
- 浅谈Oracle中的物化视图
- Oracle物化视图的一般使用
- oracle rac环境下,修改参数cluster_database导致的ORA-29707与ORA-01102