아래는 숫자/날짜 반올림·절삭 관련 함수들의 사용법, 동작 특징(음수 처리 포함), 예제와 실무 팁을 간결하게 정리한 내용입니다.
용도: 소수점/자리수 단위로 반올림.
문법:
ROUND(number, n) -- n: 소수 자리수(생략 시 0)
동작
예제
SELECT ROUND(123.456, 2) -- 123.46
SELECT ROUND(123.456, 0) -- 123
SELECT ROUND(123.456, -1) -- 120
주의: 소수점이 정확히 .5인 경우의 처리(올림 규칙: 반올림 방식)는 DBMS별로 세부 동작이 다를 수 있으니(예: 반올림-짝수 vs 항상 올림 등) 사용 중인 DB 문서 확인 권장.
용도: 날짜를 월/년 등 단위로 반올림(가까운 단위로 올림/내림).
문법
ROUND(date_expr, 'fmt') -- fmt: 'YEAR'|'YYYY'|'MONTH'|'MM'|'DD' 등
예제 (Oracle)
SELECT ROUND(TO_DATE('15-06-2025','DD-MM-YYYY'), 'MONTH') -- 01-JUL-2025 (6월 15일 → 다음 달 시작으로 반올림)
SELECT ROUND(TO_DATE('10-10-2025','DD-MM-YYYY'), 'YEAR') -- 01-JAN-2026 (10월 → 다음 해)
비교:
TRUNC(date, 'fmt')는 내림(잘라냄):
예) TRUNC('15-JUN-2025','MONTH') → 01-JUN-2025
용도: 반올림 대신 절삭(버림). 소수점 또는 자리수 단위로 자름.
문법
TRUNC(number, n)
동작
예제
SELECT TRUNC(123.456, 2) -- 123.45
SELECT TRUNC(123.456, 0) -- 123
SELECT TRUNC(123.456, -1) -- 120
용도: 소수값을 올림/내림하여 정수(또는 지정 자리)로 맞춤.
문법
CEIL(number) -- 주어진 값보다 크거나 같은 최소 정수
FLOOR(number) -- 주어진 값보다 작거나 같은 최대 정수
예제
SELECT CEIL(2.1) -- 3
SELECT FLOOR(2.9) -- 2
SELECT CEIL(-2.1) -- -2 (음수에서 CEIL은 값보다 크거나 같은 정수)
SELECT FLOOR(-2.1) -- -3 (음수에서 FLOOR은 값보다 작거나 같은 정수)
팁: 특정 자리(예: 소수 첫째 자리 기준 올림)으로 하고 싶으면
CEIL(number * 10) / 10 형태로 변형 가능.
용도: 숫자의 부호 판별(양/영/0).
문법
SIGN(number) -- 결과: 1 (양수), 0 (0), -1 (음수)
예제
SELECT SIGN(100) -- 1
SELECT SIGN(0) -- 0
SELECT SIGN(-23) -- -1
사용처: 값의 부호에 따른 분기, 정규화(예: SIGN(x) * LOG(ABS(x)) 등) 등에 유용.
용도: 정수/숫자 나머지 계산.
문법
MOD(x, y)
예제
SELECT MOD(10, 3) -- 1
SELECT MOD(25, 5) -- 0
주의: 음수 처리 방식은 DBMS/정의(수학적 표현식)에 따라 달라질 수 있음.
(예: MOD(-10,3) 결과가 DBMS마다 다를 수 있으니 필요 시 테스트 권장)
SELECT TO_CHAR(TO_DATE(SUBSTR(JUMIN, 1, 6), 'RRMMDD'), 'YYYY-MM-DD') FROM TAB1;
시작은 1부터 시작길이만큼 잘라서 반환예시:
JUMIN = '7510231111111'
SUBSTR(JUMIN, 1, 6) → '751023' (앞 6자리 추출)
TO_DATE에서 사용하는 날짜 포맷
앞 2자리 연도(RR)를 기준으로 1900년대/2000년대 자동 변환
뒤 4자리는 월(MM)과 일(DD)
예시:
TO_DATE('751023', 'RRMMDD') → 1975년 10월 23일
TO_CHAR에서 사용하는 날짜 출력 포맷예시:
TO_CHAR(TO_DATE('751023','RRMMDD'), 'YYYY-MM-DD') → '1975-10-23'
| 함수/키워드 | SELECT | WHERE | GROUP BY | HAVING | ORDER BY | 설명 |
|---|---|---|---|---|---|---|
DISTINCT | ✅ | ❌ | ❌ | ❌ | ❌ | 선택 컬럼 중복 제거. SELECT 절에서만 사용 가능 |
ROUND(n, d) | ✅ | ✅ | ✅ | ✅ | ✅ | 숫자 반올림 |
CEIL(n) | ✅ | ✅ | ✅ | ✅ | ✅ | 숫자 올림 |
FLOOR(n) | ✅ | ✅ | ✅ | ✅ | ✅ | 숫자 내림 |
SIGN(n) | ✅ | ✅ | ✅ | ✅ | ✅ | 양수/음수/0 반환 |