DECODE函数和SIGN函数详解

DECODE函数和SIGN函数详解SIGN 函数一 基本语法 sign 是符号函数 基本语法如下 sign n 如果 n0 则返回 1 如果 n 0 则返回 0 如果 n0 则返回 1

大家好,欢迎来到IT知识分享网。

SIGN函数

一、基本语法

sign是符号函数,基本语法如下:

sign(n) 

如果n>0,则返回1;如果n=0,则返回0;如果n<0,则返回-1。

二、案例演示

【案例1】
select sign( 100 ),sign(- 100 ),sign( 0 ) from dual; 

在这里插入图片描述

decode函数

一、基本语法

decode 函数基本语法如下:

decode(字段|表达式,值1,结果1,值2,结果2...,值n,结果n,缺省值); --缺省值可以省略 

说明:如果字段|表达式等于值1时,DECODE函数返回结果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 函数 ,只能在select 语句中使用。

二、案例演示

【案例1】使用decode函数匹配员工姓名
SELECT employee_id, DECODE(employee_id, 100,'Steven', 101,'Neena', 102,'Lex' 'unknow') AS first_name FROM employees where rownum<=5; 

注:mysql没有decode函数,可以用case when函数实现。

SELECT employee_id, (CASE WHEN employee_id=100 THEN 'Steven' WHEN employee_id=101 THEN 'Neena' WHEN employee_id=102 THEN 'Lex' ELSE 'unknow' END) AS first_name FROM employees ORDER BY employee_id LIMIT 5; 

在这里插入图片描述

【案例2】使用decode函数比较大小

输出两个数中的较小值:

select decode(sign(var1-var2),-1,var 1,var2) from dual 

示例:

select decode(sign(100-90),-1,100,90) as 较小值 from dual; 

在这里插入图片描述

【案例3】用decode函数实现以下功能:如果工资>20000,显示A级别;>15000,显示B级别;>10000,显示C级别;否则,显示D级别。
select salary, decode(sign(salary-20000),1,'A',0,'A',-1, decode(sign(salary-15000),1,'B',0,'B',-1, decode(sign(salary-10000),1,'C',0,'C',-1,'D'))) as 工资级别 from employees; 

注:mysql没有decode函数,可以用case when函数实现。

SELECT salary, CASE WHEN salary>20000 THEN 'A' WHEN salary>15000 THEN 'B' WHEN salary>10000 THEN 'C' ELSE 'D' END AS 工资级别 FROM employees; 

在这里插入图片描述

【案例4】利用decode实现表或者视图的行列转换
select e.name,e.sal from scott.emp e; 

在这里插入图片描述

select sum(decode(e.ename,upper('smith'),sal,0)) smith, sum(decode(e.ename,upper('allen'),sal,0)) allen, sum(decode(e.ename,upper('ward'),sal,0)) ward, sum(decode(e.ename,upper('jones'),sal,0)) jones, sum(decode(e.ename,upper('martin'),sal,0)) martin from scott.emp e ; 

在这里插入图片描述


在这里插入图片描述


图片来源于网络


参考链接:https://www.cnblogs.com/jiaxinwei/p/10252513.html

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130619.html

(0)
上一篇 2025-08-13 22:26
下一篇 2025-08-13 22:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信