大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
decode的几种用法
1:使用decode判断字符串是否一样
DECODE(value,if1,then1,if2,then2,if3,then3,…,else)
含义为
IF 条件=值1 THEN
RETURN(value 1)
ELSIF 条件=值2 THEN
RETURN(value 2)
……
ELSIF 条件=值n THEN
RETURN(value 3)
ELSE
RETURN(default)
END IF
sql测试
select empno,decode(empno,7369,’smith’,7499,’allen’,7521,’ward’,7566,’jones’,’unknow’) as name from emp where rownum<=10
输出结果
7369
smith
7499
allen
7521
ward
7566
jones
7654
unknow
7698
unknow
7782
unknow
7788
unknow
7839
unknow
7844
unknow
2:使用decode比较大小
select decode(sign(var1-var2),-1,var 1,var2) from dual
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
sql测试
select decode(sign(100-90),-1,100,90) from dual
输出结果
90
100-90=10>0 则会返回1,所以decode函数最终取值为90
反正
select decode(sign(100-90),1,100,90) from dual
输出结果
100
100-90=10>0返回1,判断结果为1,返回第一个变量100,最终输出结果为100
3:使用decode函数分段
工资大于5000为高薪,工资介于3000到5000为中等,工资小于3000为低薪
sql测试
SELECT
ename,sal,
DECODE(SIGN(sal – 5000),
1,
‘high sal’,
0,
‘high sal’,
– 1,
DECODE(SIGN(sal – 3000),
1,
‘mid sal’,
0,
‘mid sal’,
– 1,
DECODE(SIGN(sal – 1000),
1,
‘low sal’,
0,
‘low sal’,
– 1,
‘low sal’)))
FROM
emp
输出结果
SMITH
800
low sal
ALLEN
1600
low sal
WARD
1250
low sal
JONES
2975
low sal
MARTIN
1250
low sal
BLAKE
2850
low sal
CLARK
2450
low sal
SCOTT
3000
mid sal
KING
5000
high sal
TURNER
1500
low sal
ADAMS
1100
low sal
JAMES
950
low sal
FORD
3000
mid sal
MILLER
1300
low sal
4:利用decode实现表或者试图的行列转换
sql测试
SELECT
SUM(DECODE(ENAME,’SMITH’,SAL,0)) SMITH,
SUM(DECODE(ENAME,’ALLEN’,SAL,0)) ALLEN,
SUM(DECODE(ENAME,’WARD’,SAL,0)) WARD,
SUM(DECODE(ENAME,’JONES’,SAL,0)) JONES,
SUM(DECODE(ENAME,’MARTIN’,SAL,0)) MARTIN FROM EMP
输出结果如下
SMITH ALLEN WARD JONES MARTIN
800
1600
1250
2975 1250
5:使用decode函数来使用表达式来搜索字符串
decode (expression, search_1, result_1, search_2, result_2, …., search_n, result_n, default)
decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
sql测试
SELECT
ENAME,
SAL,
DECODE(INSTR(ENAME, ‘S’),
0,
‘不含有s’,
‘含有s’) AS INFO
FROM
EMP
输出结果
SMITH
800
含有s
ALLEN
1600
不含有s
WARD
1250
不含有s
JONES
2975
含有s
MARTIN
1250
不含有s
BLAKE
2850
不含有s
CLARK
2450
不含有s
SCOTT
3000
含有s
KING
5000
不含有s
TURNER
1500
不含有s
ADAMS
1100
含有s
JAMES
950
含有s
FORD
3000
不含有s
MILLER
1300
不含有s
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160085.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...