본문 바로가기
Dev. Handbook/SQL, Oracle, MariaDB

[Oracle] 내장함수 : 비교함수, 디코딩 함수

by breezyday 2022. 5. 22.

Oracle에서 사용할 수 있는 내장 함수에서 비교적 자주 사용하는 비교 함수와 디코딩 함수들은 다음과 같습니다.

1. 비교함수

함수명 양식 기능 설명
GREATEST GREATEST(expr1, expr2, ...) - 매개변수 중 가장 큰 값을 반환
- 첫번째 값의 데이터 타입을 기준으로 나머지 매개변수의 데이터 타입을 변환하여 비교함
- null이 있으면 무조건 null을 반환
LEAST LEAST(expr1, expr2, ...) - 매개변수 중 가장 작은 값을 반환
- 첫번째 값의 데이터 타입을 기준으로 나머지 매개변수의 데이터 타입을 변환하여 비교함

1.1 GREATEST(expr1, expr2, ...)

GREATEST(expr1, expr2, ...)

  • 매개변수 중 가장 큰 값을 반환
  • 매개변수 중 첫 번째 값의 데이터 타입을 기준으로 나머지 매개변수의 데이터 타입을 변환하여 비교함
  • 형 변환이 불가능한 타입을 섞어서 사용하면 오류 발생
  • null이 포함된 컬럼이 있으면 무조건 null을 반환

 

SELECT GREATEST(2, 2, 3, 1) FROM DUAL;
       --------------------
       3

SELECT GREATEST('B','C','D','A') FROM DUAL;
       -------------------------
                             [D]

SELECT GREATEST(SYSDATE, SYSDATE+1, SYSDATE+2) FROM DUAL;
       ---------------------------------------
       [2022-05-24]
       SYSDATE+2 반환

 

SELECT GREATEST('10','1','2','11'), GREATEST(10,'1','2','11') FROM DUAL;
       ---------------------------  -------------------------
       [2]                                               [11]
       첫번째 인수가 문자열이므로 문자열로 비교
                                    첫번째 인수가 숫자이므로 숫자로 비교

 

SELECT GREATEST(1, null, 3, 2), GREATEST('AB', 'CD', NULL) FROM DUAL;
       -----------------------  --------------------------
                          null  [null]
                숫자형 우측정렬  문자형 좌측 정렬

 

1.2 LEAST(expr1, expr2, ...)

LEAST(expr1, expr2, ...)

  • 매개변수 중 가장 큰 값을 반환
  • 매개변수 중 첫 번째 값의 데이터 타입을 기준으로 나머지 매개변수의 데이터 타입을 변환하여 비교함
  • 형 변환이 불가능한 타입을 섞어서 사용하면 오류 발생
  • null이 포함된 컬럼이 있으면 무조건 null을 반환

 

SELECT LEAST(2, 2, 3, 1) FROM DUAL;
       -----------------
       1

SELECT LEAST('B','C','D','A') FROM DUAL;
       ----------------------
                          [A]
                             
SELECT LEAST(SYSDATE, SYSDATE+1, SYSDATE+2) FROM DUAL;
       ------------------------------------
       [2022-05-22]
       SYSDATE 반환

 

SELECT LEAST('1', '2.1', '.00832'), LEAST(1, '2.1', '.00832') FROM DUAL;
       ---------------------------  -------------------------
       [.00832]                                       0.00832
       첫번째 타입에 따라 문자로 비교, 문자 반환
                                    첫번째 타입에 따라 숫자로 비교, 숫자 반환

 

SELECT LEAST(1, null, 3, 2), LEAST('AB', 'CD', NULL) FROM DUAL;
       --------------------  -----------------------
                       null  [null]
             숫자형 우측정렬  문자형 좌측 정렬

 

2. 디코딩 함수

함수명 양식 기능 설명
DECODE DECODE(expr, search1, result1, search2, result2, ..., default) exprsearch#을 비교하여 값이 같으면 result#을 반환하고 같은 값이 없으면 default를 반환한다.

2.1 DECODE(expr, search1, result1, search2, result2, ..., default)

DECODE(expr, search1, result1, search2, result2, ..., default)

  • expr search#을 비교하여 값이 같으면 result#을 반환하고 같은 값이 없으면 default를 반환한다.

 

SELECT DECODE('AA', 'AA', 'aa', 'BB', 'bb', 'CC', 'cc', 'Default') FROM DUAL;
              ----  ----------  ---------- -----------  ---------
              expr  #1          #2         #3           default 
       [aa]

 

SELECT DECODE('CC', 'AA','aa', 'BB','bb', 'CC','cc', 'Default') FROM DUAL;
       ----------------------------------------------------
       [cc]

SELECT DECODE('AB', 'AA','aa', 'BB','bb', 'CC','cc', 'Default') FROM DUAL;
       ----------------------------------------------------
       [Default]

 

 

 

참고

https://docs.oracle.com/database/121/SQLRF/functions002.htm#SQLRF51181

https://docs.oracle.com/database/121/SQLRF/functions002.htm#SQLRF51186

 

 

 

 

 

댓글