SQL 함수 총정리

SQLD 시험 출제 범위의 문자열·숫자·날짜·변환·NULL 함수를 한눈에 정리

1. 문자열 함수

문자열 함수 정리

함수명설명예시결과
UPPER대문자로 변환UPPER('sql')SQL
LOWER소문자로 변환LOWER('SQL')sql
SUBSTR / SUBSTRING문자열 일부 추출SUBSTR('HELLO',1,3)HEL
LENGTH / LEN문자열 길이 반환LENGTH('SQL')3
LTRIM왼쪽 공백(또는 지정 문자) 제거LTRIM(' AB')AB
RTRIM오른쪽 공백(또는 지정 문자) 제거RTRIM('AB ')AB
TRIM양쪽 공백(또는 지정 문자) 제거TRIM(' AB ')AB
LPAD왼쪽을 지정 문자로 채움LPAD('5',3,'0')005
RPAD오른쪽을 지정 문자로 채움RPAD('A',3,'*')A**
REPLACE문자열 치환REPLACE('ABC','B','X')AXC
CONCAT문자열 연결 (2개만)CONCAT('A','B')AB
CHR / CHARASCII 코드 → 문자CHR(65)A
ASCII문자 → ASCII 코드ASCII('A')65

Oracle vs SQL Server 문자열 함수 차이

기능OracleSQL Server
부분 문자열SUBSTRSUBSTRING
문자열 길이LENGTHLEN
문자열 연결|| (파이프)+ (더하기)
ASCII → 문자CHRCHAR

2. 숫자 함수

숫자 함수 정리

함수명설명예시결과
ABS절댓값ABS(-15)15
SIGN부호 판별 (1/0/-1)SIGN(-5)-1
MOD나머지 반환MOD(7,3)1
CEIL / CEILING올림 (크거나 같은 최소 정수)CEIL(3.2)4
FLOOR내림 (작거나 같은 최대 정수)FLOOR(3.8)3
ROUND반올림 (자릿수 지정 가능)ROUND(3.456, 1)3.5
TRUNC버림 (자릿수 지정 가능)TRUNC(3.456, 1)3.4
POWER거듭제곱POWER(2, 3)8
SQRT제곱근SQRT(16)4

ROUND vs TRUNC 비교

ROUND는 반올림, TRUNC는 버림입니다. 두 번째 인자(자릿수)가 음수이면 정수 자리에서 처리합니다.

함수예시결과
ROUNDROUND(1256.78, -2)1300
TRUNCTRUNC(1256.78, -2)1200

3. 날짜 함수

날짜 함수 정리

기능OracleSQL Server설명
현재 날짜SYSDATEGETDATE()현재 날짜/시간 반환
날짜 요소 추출EXTRACT(YEAR FROM d)DATEPART(YEAR, d)연/월/일 등 추출
월 더하기ADD_MONTHS(d, n)DATEADD(MONTH, n, d)날짜에 n개월 더하기
월 차이MONTHS_BETWEEN(d1, d2)DATEDIFF(MONTH, d2, d1)두 날짜 간 월 수 차이
문자→날짜TO_DATE('문자', '형식')CONVERT(DATE, '문자')문자열을 날짜로 변환
날짜→문자TO_CHAR(d, '형식')CONVERT(VARCHAR, d, 스타일)날짜를 문자열로 변환

Oracle 날짜 연산

Oracle에서는 날짜에 숫자를 직접 더하거나 빼서 일(day) 단위 계산이 가능합니다.

  • • SYSDATE + 1 → 내일
  • • SYSDATE - 7 → 일주일 전
  • • 날짜1 - 날짜2 → 두 날짜 간 일수 차이 (숫자 반환)
  • • SYSDATE + 1/24 → 1시간 후

4. 변환 함수

명시적 변환 vs 암시적 변환

명시적 변환은 변환 함수를 직접 사용하는 것이고, 암시적 변환은 DBMS가 자동으로 타입을 변환하는 것입니다. 시험에서는 암시적 변환의 성능 문제와 예기치 않은 결과를 묻는 문제가 자주 출제됩니다.

Oracle 변환 함수

함수명설명예시결과
TO_CHAR(숫자)숫자 → 문자TO_CHAR(1234, '9,999')1,234
TO_CHAR(날짜)날짜 → 문자TO_CHAR(SYSDATE, 'YYYY-MM-DD')2026-03-28
TO_NUMBER문자 → 숫자TO_NUMBER('123')123
TO_DATE문자 → 날짜TO_DATE('20260328', 'YYYYMMDD')2026-03-28

CAST / CONVERT 비교

함수지원문법예시
CASTOracle / SQL Server 공통CAST(값 AS 타입)CAST(123 AS VARCHAR(10))
CONVERTSQL Server 전용CONVERT(타입, 값, 스타일)CONVERT(VARCHAR, GETDATE(), 112)

5. NULL 관련 함수

NULL의 특성

  • • NULL은 '값이 없음'을 의미 (0이나 공백과 다름)
  • • NULL과의 모든 연산 결과는 NULL
  • • NULL과의 비교 결과는 항상 UNKNOWN (= NULL, > NULL 모두 불가)
  • • WHERE절에서 NULL 비교는 IS NULL / IS NOT NULL 사용
  • • 집계함수(SUM, AVG 등)는 NULL을 제외하고 계산

NULL 관련 함수 정리

기능OracleSQL Server설명
NULL 대체NVL(a, b)ISNULL(a, b)a가 NULL이면 b 반환
NULL 여부 분기NVL2(a, b, c)-a가 NULL이 아니면 b, NULL이면 c
같으면 NULLNULLIF(a, b) — 공통a와 b가 같으면 NULL, 다르면 a 반환
첫 번째 비NULLCOALESCE(a, b, c, ...) — 공통인자 중 첫 번째 NULL이 아닌 값 반환

NVL vs COALESCE 차이

항목NVL / ISNULLCOALESCE
인자 수2개 고정2개 이상 가능
표준DBMS 고유 함수ANSI 표준
평가 방식두 인자 모두 평가순서대로 평가, 비NULL 찾으면 중단

6. 시험 출제 포인트

자주 나오는 함정 문제

  • 1. CONCAT은 인자가 2개만 가능 — 3개 이상 연결하려면 || (Oracle) 또는 + (SQL Server) 또는 CONCAT 중첩 필요
  • 2. SUBSTR의 시작 위치는 1부터 — 0을 넣으면 1로 처리됨 (Oracle), SQL Server SUBSTRING도 1부터
  • 3. MOD(음수) 주의 — Oracle: MOD(-7, 3) = -1, SQL Server: -7 % 3 = -1 (부호는 피제수를 따름)
  • 4. ROUND/TRUNC 음수 자릿수 — ROUND(1256, -2) = 1300, TRUNC(1256, -2) = 1200 (정수 자리 처리)
  • 5. NULL 연산 함정 — 1000 + NULL = NULL, NULL = NULL은 UNKNOWN (TRUE가 아님)
  • 6. NVL2 vs NVL 혼동 — NVL(NULL, 'B') = 'B'이지만 NVL2(NULL, 'B', 'C') = 'C' (세 번째 인자 반환)
  • 7. NULLIF 결과 — NULLIF(10, 10) = NULL, NULLIF(10, 20) = 10
  • 8. Oracle SYSDATE는 괄호 없음 — SYSDATE (O), SYSDATE() (X) / SQL Server는 GETDATE() 괄호 필수

Oracle vs SQL Server 전체 비교

기능OracleSQL Server
부분 문자열SUBSTRSUBSTRING
문자열 길이LENGTHLEN
문자열 연결||+
현재 날짜SYSDATEGETDATE()
날짜 추출EXTRACTDATEPART
월 더하기ADD_MONTHSDATEADD
월 차이MONTHS_BETWEENDATEDIFF
NULL 대체NVLISNULL
타입 변환TO_CHAR, TO_NUMBER, TO_DATECONVERT, CAST
올림CEILCEILING
ASCII→문자CHRCHAR

개념을 확인했다면 문제로 실력을 검증해보세요