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) | expr과 search#을 비교하여 값이 같으면 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
'Dev. Handbook > SQL, Oracle, MariaDB' 카테고리의 다른 글
[MySQL, MariaDB] MySQL, MariaDB 버전별 호환성 (0) | 2022.11.05 |
---|---|
[Oracle] 내장함수 : 집계함수(그룹함수) (0) | 2022.05.23 |
[Oracle] 내장 함수 : NULL 관련 함수 (1) | 2022.05.14 |
[Oracle] 내장 함수 : 형 변환 함수 (0) | 2022.05.13 |
[Oracle] 내장 함수 : 날짜 함수, 시간 함수 (0) | 2022.05.10 |
댓글