← 개념서태블릿/PC 버전
2과목 · SQL 기본 및 활용·7

단일행 함수

문자·숫자·날짜·변환·일반 함수와 NULL 처리 함수까지 단일행 함수 전반을 정리합니다.

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;  -- 123.46
SELECT TRUNC(123.456, 2) FROM dual;  -- 123.45
SELECT MOD(10, 3)         FROM dual;  -- 1

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;     -- '2026-04-19'
SELECT TO_NUMBER('1,234', '9,999')   FROM dual;       -- 1234
SELECT TO_DATE('2026-04-19', 'YYYY-MM-DD') FROM dual; -- 날짜
SELECT CAST('123' AS INT)            FROM dual;       -- 123

함정: 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. 요약 체크리스트

  • 문자·숫자·날짜·변환·NULL 함수 각 대표 3개씩 쓸 수 있다.
  • CASE 문으로 등급을 분기하는 쿼리를 작성할 수 있다.
  • SYSDATE 연산의 단위와 TO_DATE의 함정을 안다.
  • COALESCE와 NVL의 차이를 설명할 수 있다.