DB관련

[Oracle/MySQL] DECODE 함수

saltdoll 2025. 3. 29. 00:57
반응형

[MySQL] DECODE함수는 데이터를 원하는 다른 값으로 바꾸어 주는 함수

DECODE함수는 첫 번째 인수를 받아들여 받아들인 내용이 조건1과 일치하면 값1로 조건2와 일치하면 값2로 바꾸어 줍니다.
DECODE(column|표현식, 조건1, value1, 조건2, value2, 조건3, value3,...)

 

예를 들어 
sql> select  deptno, DECODE(deptno, 10, '영업부',
                                                              20, '기획부',
                                                              30, '생산부',
                                                              40, '전산부') AS "부서명"
      from dept;
 
이 경우 dept 컬럼의 deptno가 10일경우 '영업부', 20일경우 '기획부', 30일경우 '생산부', 40일경우 '전산부'로 나타내주게 됩니다.

 

 

[ Oracle ] DECODE, CASE 조건문

DECODE와 CASE문은 프로그램의 if () else()와 유사합니다.

DECODE의 syntax

/*#### Oracel DECODE() 함수 ##### */
DECODE(A컬럼, B, 1,
             C, 2,
                3) 
/* A컬럼이 B와 같을 때 1, 
   A컬럼이 C와 같을 때 2, 
   만족하는 조건이 없으면 3 출력 */


DECODE(A컬럼, B,  
	         DECODE(C컬럼, D, 1, 2)
	         ,3)
/*
A컬럼와 B가 같으면 C컬럼와 D를 비교해 같다면 1, 다르다면 2, 
A컬럼과 B가 다르면 3

만약 A = B이고 C = D라면, 1을 반환합니다.
만약 A = B이고 C ≠ D라면, 2를 반환합니다.
만약 A ≠ B라면, 3을 반환합니다.
*/


/*#### Oracel CASE 함수 ##### */
CASE A 
     WHEN B THEN ( 1 )
    [WHEN C THEN ( 2 )]
     ELSE 출력3  
END "컬럼명"
/*
A컬럼의 값이 B일 경우 1을 출력, A컬럼의 값이 C일 경우 2를 출력,
만족하는 조건이 없을 경우 3을 출력,
END로 구문을 마치고 컬럼명을 정해준다.
 */

 

 

 

Examples

이 예제는 값 warehouse_id를 디코딩합니다.

warehouse_id 가 1이면 함수는 'Southlake'를 반환합니다.

warehouse_id 가 2이면 'San Francisco'를 반환합니다.

warehouse_id 가 1, 2, 3, 4가 아니면 함수는 'Non domestic'을 반환합니다.

SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake', 
                             2, 'San Francisco', 
                             3, 'New Jersey', 
                             4, 'Seattle',
                                'Non domestic') "Location" 
  FROM inventories
  WHERE product_id < 1775
  ORDER BY product_id, "Location";

참조: https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/DECODE.html

 

 

 

반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)