设为首页 收藏本站
查看: 691|回复: 0

[经验分享] ORACLE的sign函数 和 DECODE函数

[复制链接]

尚未签到

发表于 2016-7-25 11:14:57 | 显示全部楼层 |阅读模式
1:比较大小函数 SIGN
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 ,例如:
引用
a=10,b=20
则sign(a-b)返回-1

2:流程控制函数 DECODE
DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商还没有实现此功能。假设想给职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,8000 元的不加。实现:
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee
含义解释:
引用
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

应用 行转列
表结构:TEST_TB_GRADE:
create table TEST_TB_GRADE  
(  
ID        NUMBER(10) not null,  
USER_NAME VARCHAR2(20 CHAR),  
COURSE    VARCHAR2(20 CHAR),  
SCORE     FLOAT  
)
初始数据如下图:
DSC0000.png
如果需要实现如下的查询效果图:
DSC0001.png
这就是最常见的行转列,主要原理是利用decode函数、聚集函数(sum),结合group by分组实现的,具体的sql如下:
select t.user_name,  
sum(decode(t.course, '语文', score,null)) as CHINESE,  
sum(decode(t.course, '数学', score,null)) as MATH,  
sum(decode(t.course, '英语', score,null)) as ENGLISH  
from test_tb_grade t  
group by t.user_name  
order by t.user_name  

nvl
nvl(a,b) 如果a不为null 则返回a,如果a为null则返回b;
nvl2
nvl2(a,b,c) ,如果a不为null 则返回b,如果a为null则返回c;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-249150-1-1.html 上篇帖子: Oracle用户表和表空间 下篇帖子: OracleDBA之路之Oracle Instance(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表