ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

OracleÖÐdecodeº¯ÊýÓ÷¨º¬Òå
2015-07-24 10:53:16 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1´Î
Tags£ºOracle decode º¯Êý Ó÷¨ º¬Òå

DECODE(Ìõ¼þ,Öµ1,·µ»ØÖµ1,Öµ2,·µ»ØÖµ2,...Öµn,·µ»ØÖµn,ȱʡֵ)

DECODE(×ֶλò×ֶεÄÔËË㣬ֵ1£¬Öµ2£¬Öµ3£©

Õâ¸öº¯ÊýÔËÐеĽá¹ûÊÇ£¬µ±×ֶλò×ֶεÄÔËËãµÄÖµµÈÓÚÖµ1ʱ£¬¸Ãº¯Êý·µ»ØÖµ2£¬·ñÔò·µ»ØÖµ3

µ±È»Öµ1£¬Öµ2£¬Öµ3Ò²¿ÉÒÔÊDZí´ïʽ£¬Õâ¸öº¯ÊýʹµÃijЩSQLÓï¾ä¼òµ¥ÁËÐí¶à

¸Ãº¯ÊýµÄº¬ÒåÈçÏ£º

IF Ìõ¼þ=Öµ1 THEN¡¡¡¡¡¡¡¡

RETURN(·µ»ØÖµ1)

ELSIF Ìõ¼þ=Öµ2 THEN¡¡¡¡¡¡¡¡

RETURN(·µ»ØÖµ2)¡¡¡¡¡¡¡¡

......

ELSIF Ìõ¼þ=Öµn THEN¡¡¡¡¡¡¡¡

RETURN(·µ»ØÖµn)

ELSE¡¡¡¡¡¡¡¡

RETURN(ȱʡֵ)

END IF

DECODEº¯ÊýµÄ³£¼ûÓÃ;£º°´×Ö¶ÎÄÚÈÝ·Ö×é¡¢°´×Ö¶ÎÄÚÈÝÅÅÐò¡¢¹Ì¶¨ÐÐתÁÐ

1. ʹÓÃDECODEʵÏÖ°´×Ö¶ÎÄÚÈÝ·Ö×é

ÓÐʱºò·Ö×é¿ÉÄܱȽϸ´ÔÓ£¬±ÈÈçÐèÒª¶ÔijЩ×Ö¶ÎÄÚÈݺϲ¢·Ö×é´¦Àí£¬ÕâÑùʹÓüòµ¥µÄ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

ÊDz»Ðеģ¬Ê¹ÓÃ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ÊÇ×Ö·ûÐÍ'ijij²¿·Ö'£©£¬ÄÇôÔõÑùʵÏÖÅÅÐòÄØ£¿

°´×Ö¶ÎÄÚÈÝÅÅÐòºÍ°´×Ö¶ÎÄÚÈÝÖ¸¶¨¶¯Ì¬ÁÐÅÅÐò

- ½¨Á¢²âÊÔ±í

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;

- b. °´×Ö¶ÎÄÚÈÝÖ¸¶¨¶¯Ì¬ÁÐÅÅÐò

ÐèÇó£ºÈôDEPT_NAMEΪdeptA£¬Ôò°´IDÉýÐòÅÅÁУ¬·ñÔò°´REGION_IDÉýÐòÅÅÐò

SELECT ID,DEPT_NAME,REGION_ID

FROM t2

ORDER BY DECODE(DEPT_NAME,

'deptA',ID,

REGION_ID);

3. ʹÓÃDECODEʵÏ̶ֹ¨ÐÐתÁÐ

- ¼òµ¥µÄÔ±¹¤¹¤×÷ͳ¼Æ±í

DROP TABLE t3;

CREATE TABLE t3

(

STUDENT_NO NUMBER(10),

STUDENT_NAME VARCHAR2(10),

COURSE_TYPE VARCHAR2(10),

COURSE_SCORE NUMBER(10)

);

INSERT INTO t3 VALUES(1,'jack','english',80);

INSERT INTO t3 VALUES(1,'jack','chinese',90);

INSERT INTO t3 VALUES(1,'jack','math',85);

INSERT INTO t3 VALUES(2,'tony','english',70);

INSERT INTO t3 VALUES(2,'tony','chinese',95);

INSERT INTO t3 VALUES(2,'tony','math',80);

COMMIT;

ʵÏÖÐÐתÁУº

SELECT STUDENT_NAME,DECODE(COURSE_TYPE,'english',COURSE_SCORE) FROM t3;

·ÖÎöÕâÌõÓï¾ä£¬·Ö×éÓë²»·Ö×éµÄ²î±ðÔÚÄÄÀ

SELECT STUDENT_NAME,

MAX(DECODE(COURSE_TYPE,'english',COURSE_SCORE)) ENGLISH,

MAX(DECODE(COURSE_TYPE,'chinese',COURSE_SCORE)) CHINESE,

MAX(DECODE(COURSE_TYPE,'math',COURSE_SCORE)) MATH

FROM t3

GROUP BY STUDENT_NAME;

ΪʲôÐèÒªMAX£¿

ÒòΪҪʵÏÖÐÐתÁУ¬°´×ֶηÖ×飬¶ÔDECODEÖеķǷÖ×éÁбØÐëÒªÓзÖ×麯Êý£¬µ±È»MIN¡¢SUM

AVGµÈ×麯ÊýÒ²¿ÉÒÔʵÏÖ£¬MAX¡¢MIN¶ÔÈκÎÀàÐͶ¼ÊÊÓã¬SUM¡¢AVGÖ»ÄܶÔÊýÖµÐÍ

?

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£º½â¾öORA-28000:theaccountislocked ÏÂһƪ£ºMySQL²é¿´±íÏà¹ØÍâ¼ü¹ØÏµsql

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)