1. 단일행 함수란
행 하나당 하나의 결과를 반환하는 함수. SELECT, WHERE, ORDER BY 어디에서도 사용 가능. 집계 함수(여러 행 → 하나)와는 다릅니다.
2. 문자 함수
| 함수 |
설명 |
예 |
LENGTH(s) |
길이 |
LENGTH('abc') → 3 |
UPPER / LOWER |
대/소문자 변환 |
UPPER('abc') → 'ABC' |
SUBSTR(s, start, len) |
부분 문자열 |
SUBSTR('abcdef', 2, 3) → 'bcd' |
CONCAT / ` |
|
` |
LPAD / RPAD |
좌/우 패딩 |
LPAD('7', 3, '0') → '007' |
TRIM |
양쪽 공백 제거 |
TRIM(' abc ') → 'abc' |
REPLACE |
치환 |
REPLACE('a-b', '-', '_') → 'a_b' |
INSTR |
문자 위치 |
INSTR('abc', 'b') → 2 |
3. 숫자 함수
| 함수 |
설명 |
ABS(n) |
절대값 |
ROUND(n, d) |
반올림 |
TRUNC(n, d) |
버림 |
CEIL(n) / FLOOR(n) |
올림/내림 |
MOD(a, b) |
나머지 |
POWER(a, b) |
거듭제곱 |
SIGN(n) |
부호(-1/0/1) |
SELECT ROUND(123.456, 2) FROM dual;
SELECT TRUNC(123.456, 2) FROM dual;
SELECT MOD(10, 3) FROM dual;
4. 날짜 함수
| 함수 |
설명 |
SYSDATE / CURRENT_DATE |
현재 날짜 |
SYSTIMESTAMP / CURRENT_TIMESTAMP |
현재 시각 |
ADD_MONTHS(d, n) |
n개월 가감 |
MONTHS_BETWEEN(d1, d2) |
월 단위 차 |
LAST_DAY(d) |
해당 월의 마지막 날 |
NEXT_DAY(d, '월요일') |
가장 가까운 지정 요일 |
EXTRACT(YEAR FROM d) |
연/월/일 추출 |
날짜 연산
날짜 + 숫자 = 날짜 + 일수
날짜 - 날짜 = 일수 차(숫자)
SELECT SYSDATE + 7 FROM dual;
SELECT SYSDATE - DATE '2024-01-01' FROM dual;
5. 변환 함수
| 함수 |
설명 |
TO_CHAR |
숫자/날짜 → 문자 |
TO_NUMBER |
문자 → 숫자 |
TO_DATE |
문자 → 날짜 |
CAST |
ANSI 표준 타입 변환 |
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
SELECT TO_NUMBER('1,234', '9,999') FROM dual;
SELECT TO_DATE('2026-04-19', 'YYYY-MM-DD') FROM dual;
SELECT CAST('123' AS INT) FROM dual;
함정: TO_DATE(SYSDATE, 'YYYY') — SYSDATE는 이미 DATE이므로 다시 TO_DATE 하면 오류 또는 암묵 변환 후 의도와 다르게 동작. 문자로 바꾸려면 TO_CHAR.
6. 일반 / NULL 처리 함수
| 함수 |
설명 |
NVL(a, b) |
a가 NULL이면 b |
NVL2(a, v1, v2) |
a가 NULL이 아니면 v1, 아니면 v2 |
NULLIF(a, b) |
a = b이면 NULL, 아니면 a |
COALESCE(...) |
여러 인자 중 첫 번째 NOT NULL |
DECODE(a, v1, r1, v2, r2, ..., def) |
조건 분기 (Oracle) |
CASE |
ANSI 표준 조건 분기 |
SELECT
name,
CASE WHEN salary >= 5000000 THEN 'high'
WHEN salary >= 3000000 THEN 'mid'
ELSE 'low'
END AS grade
FROM emp;
7. 자주 출제되는 포인트
- 암묵적 형변환:
WHERE col = '123'에서 col이 NUMBER면 자동 변환. 성능 이슈 유발.
TO_DATE에 이미 DATE 타입을 넣으면 오류.
ROUND vs TRUNC: 반올림 / 버림.
SUBSTR 인덱스는 1-based (Oracle).
DECODE는 Oracle 전용, CASE가 ANSI 표준.
8. 요약 체크리스트