decode 函数是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了decode 函数是啥意思相关的知识,希望对你有一定的参考价值。

decode是解码的意思,这个函数很多都有,比如js里面有,数据库中应该没有的 参考技术A 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

decode(A.type, 0, 1, 0) 这个sql函数,是啥意思? 谢谢解答

参考技术A 如果A.type字段等于0那就返回1否则返回0!
decode就是数据库里的一个判断,
我自己的理解!
参考技术B A.type如果是0 则设置A.type为1 其他的设置为0 参考技术C DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值.
其具体的语法格式如下:
DECODE(input_value,value,result[,value,result…][,default_result]);
其中:
input_value 试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果
value 是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result 是一组成序偶的结果值
default_result 未能与任何一序偶匹配成功时,函数返回的默认值
下面的例子说明了,如何读取用户CHECKUP表SEAPARK中的BLOOD_TEST_FLAG列下的项目,作为DECODE函数的实参支持值。
SELECT checkup_type,
DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)
FROM checkup;

参考资料:http://zhidao.baidu.com/question/5539202.html

本回答被提问者采纳

以上是关于decode 函数是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

第一弹图片打开显示web image decode fail是啥意思?

Python文件处理里encoding和encode有事区别,bytes类型是啥意思?

encoding是啥意思

ffdshow audio decoder是啥东西?怎么我一上Q就会出现,而且很卡?

这段是啥意思,高手解决下哦,不全哦,告诉我怎么转就行拉

[&] 在函数之前是啥意思? [复制]