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

¹½Ê¸

DECODE ( expr , search_and_result_list [ , default ] )
return [ Âè3°ú¿ô¡Êsearch_and_result_list ¤ÎºÇ½é¤Î result ¼°¡Ë ¤Î¥Ç¡¼¥¿·¿ ]

°ú¿ô

exprNULL ¤òÀßÄê²Äǽ¤Ê¼°¡Ê¿ôÃͼ°¡¢Ê¸»úÎó¼°¡¢ÆüÉÕ¼°¡¢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 Oracle 9i ¤Ê¤É¤Î¿·¤·¤¤¥Ç¡¼¥¿·¿¤ò»ÈÍѤ¹¤ë¤È 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 ´ØÏ¢

 
¥¢¥ë¥Õ¥¡¥Ù¥Ã¥ÈÊÌ ´Ø¿ô°ìÍ÷ ¥·¥ç¡¼¥È¥«¥Ã¥È
ABCDEFG
HILMNOP
RSTUVWX
¥¹¥Ý¥ó¥µ¡¼¥É ¥ê¥ó¥¯

IT¥¨¥ó¥¸¥Ë¥¢ ¥­¥ã¥ê¥¢¥¢¥Ã¥×¡¦Å¾¿¦¡¦µá¿Í¾ðÊó

Oracle & ITµ»½Ñ¼Ô ÀìÌç½ñ

¢£¤ä¤µ¤·¤¤Oracle PL/SQLÆþÌç (DB Magazine SELECTION)
²Á³Ê: 2,310 ±ß ¡ÊÀǹþ¡Ë
¿·ÉÊ/¥æ¡¼¥º¥É²Á³Ê: 700 ±ß ¤è¤ê
¥Ð¡¼¥¸¥ç¥ó¤È¥³¥ó¥Ç¥£¥·¥ç¥ó¾ðÊó¤ËÃí°Õ
¥ê¥ê¡¼¥¹: 2002-06
¥æ¡¼¥¶¡¼¥ì¥Ó¥å¡¼: 7 ·ï

¢£¥ª¥é¥¯¥ë¥Þ¥¹¥¿¡¼¶µ²Ê½ñ Bronze Oracle Database 10g¡ÚSQL´ðÁÃI¡
²Á³Ê: 3,990 ±ß ¡ÊÀǹþ¡Ë
¿·ÉÊ/¥æ¡¼¥º¥É²Á³Ê: 2,400 ±ß ¤è¤ê
¥ê¥ê¡¼¥¹: 2004-12-21
¥æ¡¼¥¶¡¼¥ì¥Ó¥å¡¼: 4 ·ï

¢£Å°Ä칶ά ORACLE MASTER Silver DBA10g ÌäÂ꽸 (IT¥×¥í/IT¥¨¥ó¥¸
²Á³Ê: 3,150 ±ß ¡ÊÀǹþ¡Ë
¿·ÉÊ/¥æ¡¼¥º¥É²Á³Ê: 2,177 ±ß ¤è¤ê
¥ê¥ê¡¼¥¹: 2006-02-15
¥æ¡¼¥¶¡¼¥ì¥Ó¥å¡¼: 4 ·ï

ÆüËÜ¥ª¥é¥¯¥ë
¢£ ÆüËÜ¥ª¥é¥¯¥ë ³ô¼°²ñ¼Ò
¢£ ¥ª¥é¥¯¥ë¥Þ¥¹¥¿¡¼»ñ³Ê ¡Ê¥ª¥é¥¯¥ë¥Þ¥¹¥¿¡¼¤È¤Ï¡Ë
¢£ ¥ª¥é¥¯¥ë¥µ¥Ý¡¼¥È¥»¥ó¥¿¡¼
Google