SQL 내장 함수 정리

TJK·2025년 8월 22일

SQL 내장 함수 정리

SQL 내장 함수는 데이터 조작 및 분석에 필수적이며, SQLD 시험에 자주 출제되는 핵심 개념입니다. 함수별로 어떤 역할을 하는지, 그리고 어떤 함정이 있는지 정확히 파악하는 것이 중요합니다.


1. 숫자 함수

함수설명시험 핵심 포인트
ROUND(n, m)반올림소수점 m번째 자리에서 반올림
TRUNC(n, m)버림소수점 m번째 자리에서 무조건 버림
CEIL(n)올림소수점 무조건 올림
FLOOR(n)내림소수점 무조건 내림
ABS(n)절댓값음수도 양수로 변환
MOD(a, b)나머지ab로 나눈 나머지
SIGN(n)부호양수: 1, 음수: -1, 0: 0

2. 문자 함수

함수설명시험 핵심 포인트
SUBSTR(str, s, len)부분 문자열str에서 s번째부터 len개 추출
LENGTH(str)바이트 길이바이트 수 반환 (한글 2~3바이트)
CHAR_LENGTH(str)문자 개수글자 수 반환 (한글 1자=1개)
TRIM공백/문자 제거LTRIM (왼쪽), RTRIM (오른쪽), TRIM (양쪽)
REPLACE문자열 치환특정 문자열을 다른 문자열로 바꿈
CONCAT문자열 연결두 문자열을 합침 (`

3. 날짜/시간 함수

함수설명시험 핵심 포인트
SYSDATE현재 날짜Oracle에서 사용 (MySQL은 NOW())
ADD_MONTHS(d, n)개월 추가특정 날짜에 n개월을 더함
MONTHS_BETWEEN(d1, d2)월 차이두 날짜 간의 개월 수 차이
LAST_DAY(d)마지막 날해당 달의 마지막 날짜를 반환
NEXT_DAY(d, 요일)다음 요일특정 날짜 이후의 첫 요일 날짜

4. 변환 함수

함수설명시험 핵심 포인트
TO_CHAR(d, fmt)날짜/숫자 → 문자날짜나 숫자를 원하는 형식의 문자로 변환
TO_DATE(str, fmt)문자 → 날짜문자를 날짜 타입으로 변환
CAST(expr AS type)형 변환ANSI 표준으로 형 변환

5. NULL 관련 함수

함수설명시험 핵심 포인트
NVL(expr, val)NULL 대체expr이 NULL이면 val 반환 (Oracle 전용)
IFNULL(expr, val)NULL 대체expr이 NULL이면 val 반환 (MySQL 전용)
COALESCE(...)NULL 아닌 첫 값여러 값 중 첫 번째로 NULL이 아닌 값 반환 (ANSI 표준)

SQL 함수 핵심 요약

함수 분류주요 역할시험 단골 키워드
숫자반올림, 버림, 부호ROUND vs TRUNC, SIGN
문자길이, 부분 추출, 치환LENGTH vs CHAR_LENGTH
날짜날짜 계산ADD_MONTHS, LAST_DAY, MONTHS_BETWEEN
변환데이터 타입 변경TO_CHAR, TO_DATE
NULLNULL 값 처리NVL, IFNULL, COALESCE

실전 기출 문제 세트

1. 다음 중 TRUNC(123.987, 1)의 결과는 무엇인가?
124.0
123.9
123.99
123.98

2. 아래 SQL 실행 결과로 맞는 것은?

SELECT SIGN(-15), SIGN(0), SIGN(20) FROM DUAL;

(-1, 0, 1)
(-15, 0, 20)
(0, -1, 1)
(1, 0, -1)

3. 다음 쿼리 실행 결과는? (Oracle 기준, 한글은 2바이트)

SELECT LENGTH('한글'), CHAR_LENGTH('한글') FROM DUAL;

(4, 2)
(2, 2)
(2, 4)
(3, 3)

4. 아래 SQL 실행 결과는?

SELECT COUNT(*), COUNT(access_password)
FROM Novels;

(단, Novels 테이블의 access_password 컬럼에는 NULL 값이 2개 존재하며, 전체 행은 10개이다.)
① 10, 8
② 10, 10
③ 8, 8
④ 8, 10

5. 날짜 함수 관련 설명 중 옳은 것은?
NEXT_DAY는 두 날짜 사이의 차이를 구한다.
LAST_DAY는 해당 달의 마지막 날짜를 반환한다.
ADD_MONTHS는 특정 날짜의 다음 월요일을 찾는다.
MONTHS_BETWEEN은 특정 날짜에 개월을 더한다.

6. NULL 처리 함수 관련 설명으로 틀린 것은?
NVL은 Oracle에서 NULL을 다른 값으로 대체한다.
IFNULL은 MySQL에서 NULL을 다른 값으로 대체한다.
COALESCE는 ANSI 표준으로, NULL이 아닌 첫 번째 값을 반환한다.
NVLIFNULL은 여러 개의 값을 인자로 받을 수 있다.


정답 및 해설

  • 문제 1 정답: ②
    • 해설: TRUNC는 소수점 이하를 m번째 자리까지만 남기고 나머지는 버리는 함수입니다.
  • 문제 2 정답: ①
    • 해설: SIGN 함수의 규칙은 양수: 1, 음수: -1, 0: 0입니다.
  • 문제 3 정답: ①
    • 해설: LENGTH바이트 단위로 길이를 계산하므로 한글 '한'은 2바이트, '글'은 2바이트로 총 4바이트가 됩니다. CHAR_LENGTH글자 단위로 계산하여 2가 됩니다.
  • 문제 4 정답: ①
    • 해설: COUNT(*)는 전체 행인 10개를 셉니다. COUNT(컬럼)NULL을 제외하고 세므로, 10 - 2 = 8이 됩니다.
  • 문제 5 정답: ②
    • 해설: LAST_DAY는 해당 달의 마지막 날짜를 반환하는 함수입니다.
  • 문제 6 정답: ④
    • 해설: NVLIFNULL은 두 개의 인자(컬럼, 대체값)만 받습니다. 여러 개의 인자를 받아 NULL이 아닌 첫 번째 값을 반환하는 함수는 COALESCE입니다.
profile
Hello world!

0개의 댓글