¾ò·ïÀ©¸æ¤Ë¤è¤Ã¤ÆÆÃÄê¤ÎÃͤª¤è¤ÓÃͰè¤òÊ̤ÎÃͤËÊÑ´¹

DECODE ( expr , search_and_result_list [ , default ] )
return [ Âè3°ú¿ô¡Êsearch_and_result_list ¤ÎºÇ½é¤Î result ¼°¡Ë ¤Î¥Ç¡¼¥¿·¿ ]
| expr | NULL ¤òÀßÄê²Äǽ¤Ê¼°¡Ê¿ôÃͼ°¡¢Ê¸»úÎó¼°¡¢ÆüÉÕ¼°¡¢etc¡Ë |
| search_and_result_list | ¸¡º÷¼°¤È·ë²Ì¼°¥ê¥¹¥È [ search , result ] |
| default | ¸¡º÷¼°¤Ë°ìÃפ·¤Ê¤¤¾ì¹ç¤Î·ë²Ì¼° | default NULL |
- ¼° expr ¤È°ìÃפ·¤¿ ¸¡º÷¼° search ¤ò¤â¤Ä result ¤òÌ᤹¡£
- ¼° expr ¤¬ ¸¡º÷¼°¤È·ë²Ì¼°¥ê¥¹¥È ¤Ë´Þ¤Þ¤ì¤Ê¤¤¾ì¹ç¤Ë¤Ï default_expr ¤òÌ᤹¡£

- SQL¡¢Ëä¤á¹þ¤ßSQL ¤Ç»ÈÍѲÄǽ¡¢PL/SQL ¤ËÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¡£¡ÊOracle 10g R2 »þÅÀ¡Ë
¸¡º÷¼°¤È·ë²Ì¼°¥ê¥¹¥È
¸¡º÷¼°¤È·ë²Ì¼°¤Î¥ê¥¹¥È¤Ï [ search , result ] ¤Î·Á¼°¤Ç£±¥»¥Ã¥È°Ê¾å¤«¤Ä 126¡¢¤Þ¤¿¤Ï¡¢127 ¥»¥Ã¥È°Ê²¼¤ÎÈÏ°Ï¤Ç ¸¡º÷¼° ¤È ¤½¤Î·ë²Ì¼° ¤ò»ØÄꤹ¤ë¡£
ɾ²Á¤Ï¤¹¤Ù¤Æ¤Î¥ê¥¹¥È¤Ë¤ª¤¤¤ÆÅù¹æ¤Î¤ß¤Ç Èæ³Ó±é»»»Ò ¤ÏÁªÂò¤Ç¤¤Ê¤¤¡£
DECODE ´Ø¿ô¤ÎÆâÍÆ
¼° expr ¤¬ search_and_result_list ¤ÎÂè1ÈÖÌܤÎÍ×ÁǤΠsearch1 ¤ÈƱÃͤʤé result1 ¤òÌ᤹¡£search2 ¤ÈƱÃͤʤé result2 ¤òÌ᤹¡£¤³¤ì¤ò ¸¡º÷¼°¤È·ë²Ì¼°¥ê¥¹¥È [ search , result ] ¤Î¤¢¤ëʬ¤À¤±·«¤êÊÖ¤¹¡£ºÇ¸å¤Þ¤Ç°ìÃפ¹¤ëÍ×ÁǤ¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ë¤Ï¥ª¥×¥·¥ç¥ó»ØÄê¤Î ¼° default ¤ÎÃͤòÌ᤹¡£
Ãí°Õ
DECODE ¤Î°ú¿ô¤ÏºÇÂç 255 ¸Ä¤Þ¤Ç¤È¤Ê¤ë¡£¤â¤·¥Ç¥Õ¥©¥ë¥ÈÃͤò»ÈÍѤ¹¤ë¾ì¹ç¤Ë¤Ï ¼° expr ¤È default ¤ÎÍ×ÁǤò 255 ¤«¤éº¹¤·°ú¤¤¤Æ 253 ¸Ä¤¬ ¸¡º÷¼°¤È·ë²Ì¼°¤Î¥ê¥¹¥È¤ÎºÇÂç¿ô¤È¤Ê¤ë¡£·ë²Ì 253/2 ¢Í 126 ¸Ä¤Þ¤Ç¤Î ¸¡º÷¼° ¤ÈÈæ³Ó¤·¤ÆÃÖ´¹¤¹¤ë¤³¤È¤¬²Äǽ¡£
¥Ç¥Õ¥©¥ë¥È¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ï 127 ¥ê¥¹¥È¤ò»ØÄꤹ¤ë¤³¤È¤¬²Äǽ¡£¤½¤Î¤È¤¤Î default ¤Ï NULL ¤È¤Ê¤ë¡£
Ìá¤êÃͤΥǡ¼¥¿¥¿¥¤¥×¤ÎÁªÂò
Ìá¤êÃͤΠ¥Ç¡¼¥¿·¿ ¤Ï¿ôÃÍ·¿¤Ê¤É¤Ë¤è¤ëÍ¥Àè½ç¤Ê¤É¤â̵¤¯¡¢É¬¤º Âè 3 ¥Ñ¥é¥á¡¼¥¿¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤¬ºÎÍѤµ¤ì¤ë¡£¤½¤Î¤¿¤á¤Ë¥Ç¡¼¥¿¤Ë¤è¤Ã¤Æ¼Â¹Ô»þ¥¨¥é¡¼¤Ë¤Ê¤ë²ÄǽÀ¤¬¤¢¤ë¡£TIMESTAMP WITH TIMEZONE
¤Ê¤É¤Î¿·¤·¤¤¥Ç¡¼¥¿·¿¤ò»ÈÍѤ¹¤ë¤È CASE ¼°¤ÈƱÍͤ˷¿¥Á¥§¥Ã¥¯¤¬¹Ô¤Ê¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤Ç¤¢¤ë¡£²¼°Ì¸ß´¹À¤Ç¤ï¤¶¤È¥¨¥é¡¼¤Ç¤â̵»ë¤·¤Æ¤¤¤ë¤Î¤«¡©
select dump(DECODE(2, 1, 'ONE', 2, 2)) "STRING" from dual;
¢Í 2 ¤Ç¤Ï¤Ê¤¯ '2' ¤¬Ìᤵ¤ì¤ë
STRING
------------------------------
Typ=1 Len=1: 50
Typ=1 ¤Ï VARCHAR2 ¤ò¤¢¤é¤ï¤¹ ¥¿¥¤¥×ÈÖ¹æ / DUMP ´Ø¿ô
select DECODE(num, 1, SYSDATE, 2, 'TWO', 3, NULL, 'UNKNOWN') from xxx;
num = 1 ¤Î¤È¤ ¢Í SYSDATE (DATE ·¿)
num = 2 ¤Î¤È¤ ¢Í 'TWO' (DATE ·¿...ÊÑ´¹ÉÔ²Äǽ¤Ç¼Â¹Ô»þ¥¨¥é¡¼)
num = 3 ¤Î¤È¤ ¢Í NULL (DATE ·¿ : OK)
¥Ç¥Õ¥©¥ë¥È ¢Í 'UNKNOWN' ¡ÊDATE ·¿...ÊÑ´¹ÉÔ²Äǽ¤Ç¼Â¹Ô»þ¥¨¥é¡¼¡Ë
DECODE ¤Î»ÈÍÑÎã
¥í¡¼¥Þ¿ô»ú¤Ø¤ÎÊÑ´¹¤Î°ìÉô¤ò DECODE ¤Çɽ¸½¤·¤Æ¥Á¥§¥Ã¥¯¤¹¤ë¡£
DECODE ´Ø¿ô¤Ç¤Ï NULL ¤ò ¸¡º÷¼° search ¤È¤·¤Æ»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤ëÅÀ¤¬¥æ¥Ë¡¼¥¯¤ÊÅÀ¤Ç¤¢¤ë¡£¡ÊTO_CHAR ¤Î ¥í¡¼¥Þ¿ô»úÊÑ´¹ ¤Ç¤Ï¡¢¤Ê¤Ë¤²¤Ë·å¤½¤í¤¨½èÍý¤¬»Ü¤µ¤ì¤Æ¤¤¤ë¡Ë
SQL> select num, to_char(num, 'RN'),
2 DECODE(num, 1, 'I', 10, 'X', 20, 'XX', 30, 'XXX', 40, 'XL',
3 NULL, '****',
4 'UNDEFINED') Roman_Num
5 from decode_sample1;
NUM TO_CHAR(NUM,'RN') ROMAN_NUM
---------- ------------------ ------------------
1 I I
10 X X
20 XX XX
21 XXI UNDEFINED
30 XXX XXX
40 XL XL
<NULL> <NULL> ****
DECODE ¤Ç¿ôÃͤÎÅù²Á¡¢Âç¾®´Ø·¸¤òɾ²Á¤¹¤ë¤Ë¤Ï SIGN ´Ø¿ô¤ò»ÈÍѤ¹¤ë¡£
SQL> select num, DECODE(sign(num-10), -1, '10̤Ëþ', +1, '10°Ê¾å', 0, '10') X,
2 DECODE(sign(num-20), -1, '20̤Ëþ', +1, '20°Ê¾å', 0, '20') XX,
3 DECODE(sign(num-30), -1, '30̤Ëþ', +1, '30°Ê¾å', 0, '30') XXX,
4 DECODE(sign(num-40), -1, '40̤Ëþ', +1, '40°Ê¾å', 0, '40') XL
5 from decode_sample1;
NUM X XX XXX XL
---------- -------- -------- -------- --------
1 10̤Ëþ 20̤Ëþ 30̤Ëþ 40̤Ëþ
10 10 20̤Ëþ 30̤Ëþ 40̤Ëþ
20 10°Ê¾å 20 30̤Ëþ 40̤Ëþ
21 10°Ê¾å 20°Ê¾å 30̤Ëþ 40̤Ëþ
30 10°Ê¾å 20°Ê¾å 30 40̤Ëþ
40 10°Ê¾å 20°Ê¾å 30°Ê¾å 40
<NULL> <NULL> <NULL> <NULL> <NULL>
DECODE ¤Çʸ»úÎó¤ÎÂç¾®´Ø·¸¤Î°ìÊý¤òɾ²Á¤¹¤ë¤Ë¤Ï GREATEST¡¢LEAST ¤ò»ÈÍѤ¹¤ë¡£DECODE ¤ò¥Í¥¹¥È¤¹¤ë¤È¡¢¤µ¤é¤ËÄ´¤Ù¤ë¤³¤È¤¬²Äǽ¡£
SQL> select str, DECODE(greatest('AAA',str), 'AAA', 'AAA°Ê²¼') AAA,
2 DECODE(greatest('BBB',str), 'BBB', 'BBB°Ê²¼') BBB,
3 DECODE(least('CCC',str), 'CCC', 'CCC°Ê¾å') CCC,
4 DECODE(least('DDD',str), 'DDD', 'DDD°Ê¾å') DDD
5 from decode_sample2;
STR AAA BBB CCC DDD
-------- -------- -------- -------- --------
AAA AAA°Ê²¼ BBB°Ê²¼ <NULL> <NULL>
AAB <NULL> BBB°Ê²¼ <NULL> <NULL>
BBB <NULL> BBB°Ê²¼ <NULL> <NULL>
CCC <NULL> <NULL> CCC°Ê¾å <NULL>
<NULL> <NULL> <NULL> <NULL> <NULL>
DDD <NULL> <NULL> CCC°Ê¾å DDD°Ê¾å
EEE <NULL> <NULL> CCC°Ê¾å DDD°Ê¾å
DECODE ¤Ç´Ø¿ô¤ò¶î»È¤·¤Æ¾ò·ïÀ©¸æ¤¹¤ë¤³¤È¤Ï CASE ¼°¤Î¸ºß¤·¤Ê¤¤ Oracle8 »þÂå¤Þ¤Ç¤Î¥Æ¥¯¥Ë¥Ã¥¯¤Ê¤Î¤Ç ñ½ãCASE¼°¡¢¸¡º÷CASE¼° ¤¬´°È÷¤µ¤ì¤Æ¤¤¤ë Oracle 9i °Ê¹ß¤Ç¤¢¤ì¤Ð¡¢¤ª¤¹¤¹¤á¤Ç¤¤Ê¤¤¼êË¡¤Ç¤¢¤ë¡£
¸«¤¿Ìܤˤâ¤ä¤µ¤·¤¤ ñ½ãCASE¼° ¤ä ¸¡º÷CASE ¼° ¤ò»ÈÍѤ¹¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¡£
SQL ´Ø¿ô - DECODE ´ØÏ¢