Oracle在decode中的含义

Oracle在decode中的含义

黑客学院hacker2017-05-26 3:12:039121A+A-

DECODE(标准,值1,返回值1,值2,返回值2,有限责任公司值n,返回值n,缺省值)

DECODE(字符串或字符串的乘除法,值1,值2,值3)

这一涵数运作的結果是,当字符串或字符串的乘除法的值相当于值1时,该涵数返回值2,不然返回值3

这样的话值1,值2,值3还可以是关系式,这一涵数促使一些SQL句子简易了很多

该涵数的含意给出:

IF 标准=值1 THEN    

RETURN(返回值1)

ELSIF 标准=值2 THEN    

RETURN(返回值2)    

......

ELSIF 标准=值n THEN    

RETURN(返回值n)

ELSE    

RETURN(缺省值)

END IF

DECODE涵数的普遍用处:按字符串內容排序、按字符串內容排列、确定行转列

1. 应用DECODE保持按字符串內容排序

偶尔排序将会非常复杂,例如必须对一些字符串內容合拼排序解决,那样应用简易的GROUP BY 就没用,

可是应用CASE或DECODE就能够获得预估的結果

案例:

- 创建简易的聘员及相匹配职位表

DROP TABLE t1;

CREATE TABLE t1

(

ID NUMBER(10),

NAME VARCHAR2(10),

JOB VARCHAR2(20)

);

INSERT INTO t1 VALUES(1,'jack','VP');

INSERT INTO t1 VALUES(2,'tony','CEO');

INSERT INTO t1 VALUES(3,'merry','VP');

INSERT INTO t1 VALUES(4,'james','OPERATION');

INSERT INTO t1 VALUES(5,'linda','OPERATION');

COMMIT;

如今必须各自数据分析VP及左右岗位的总数、一般聘员的总数,它是应用简易的GROUP BY JOB

是不好的,应用DECODE来保持就非常简单

SELECT DECODE(JOB,'VP','VP_CEO','CEO','VP_CEO','OPERATION') JOB,

COUNT(*) JOB_CNT

FROM t1

GROUP BY DECODE(JOB,'VP','VP_CEO','CEO','VP_CEO','OPERATION');

結果给出:

JOB JOB_CNT

----------- --------------

VP_CEO 3

OPERATION 2

2. 应用DECODE保持按字符串內容排列

在平时设计规划中将会遇到那样的状况,例如一張表有ID,NAME字符串(ID为经销商主键),

必须按NAME值特定排列标准(如NAME是空格符型'某人部位'),那麼如何保持排列呢?

按字符串內容排列和按字符串內容特定静态列排列

- 创建检测表

DROP TABLE t2;

CREATE TABLE t2

(

ID NUMBER,

DEPT_NAME VARCHAR2(10),

REGION_ID NUMBER(10)

);

INSERT INTO t2 VALUES(1,'deptA',12);

INSERT INTO t2 VALUES(2,'deptA',10);

INSERT INTO t2 VALUES(3,'deptA',9);

INSERT INTO t2 VALUES(4,'deptA',7);

INSERT INTO t2 VALUES(5,'deptB',12);

INSERT INTO t2 VALUES(6,'deptB',13);

INSERT INTO t2 VALUES(7,'deptB',22);

INSERT INTO t2 VALUES(8,'deptB',9);

INSERT INTO t2 VALUES(9,'deptC',8);

INSERT INTO t2 VALUES(10,'deptC',10);

INSERT INTO t2 VALUES(11,'deptC',11);

COMMIT;

- a. 按字符串內容排列

要求:按单位DEPT_NAME排列(A->B->C),针对每一单位內部按地区REGION_ID升序

剖析:这儿的单位DEPT_NAME没有数子(varchar2),立即排列时不好的,

假如能将DEPT_NAME的每一值变为相匹配的数子,再排列就就行了。

SELECT ID,DEPT_NAME,REGION_ID

FROM t2

ORDER BY DECODE(DEPT_NAME,

'deptA',1,

'deptb',2,

3),

REGION_ID;


点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 1条评论
  • 孤鱼颜于2022-05-29 01:53:56
  • RN(缺省值)END IFDECODE涵数的普遍用处:按字符串內容排序、按字符串內容排列、确定行转列1. 应用DECODE保持按字符串內容排序偶尔排序将会非常复杂,例如必须对一些字符串內容合拼排序解决,那样应用简易的GROUP BY 就没用,可是应用CASE或DECODE就能够获

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理