이번 글에서는 단일행 함수 중 숫자처리 함수를 정리해 보겠습니다.
함수 | 설명 |
ROUND | 지정한 자리 수 이하에서 반올림하여 반환 |
TRUNC | 지정한 자리 수 이하에서 절삭한 결과를 반환 |
MOD | 나누기 연산을 한 후 나머지 값을 반환 |
CEIL | 주어진 숫자값보다 크거나 같은 최소 정수값을 반환 |
FLOOR | 주어진 숫자값보다 작거나 같은 최대 정수값을 반환 |
SIGN | 주어진 값이 양수인지 음수인지 0인지 식별할 수 있는 값을 반환 |
1. ROUND 함수
지정한 자리 수 이하에서 반올림한 결과를 반환합니다.
ROUND(컬럼명|표현식, [n])
n은 반올림하기 위한 자리 수로서, n이 양수면 소수 자리를 반올림하고 음수면 정수 자리를 반올림합니다. 0이 기본값이기 때문에 생략하면 소수점에서 반올림합니다.
소수점 두 번째 자리까지 출력하는 SQL문입니다. 소수점 세 번째 자리에서 반올림합니다.
SELECT ROUND(456.789,2) FROM dual; --> 456.79
정수로 출력하는 SQL문입니다. 소수점 자리를 반올림합니다.
SELECT ROUND(456.789) FROM dual; --> 457
정수 두 번째 자리까지 출력하는 SQL문입니다. 정수 첫 번째 자리에서 반올림합니다.
SELECT ROUND(456.789,-1) FROM dual; --> 460
2. TRUNC 함수
지정한 자리 수 이하에서 절삭한 결과를 반환합니다.
TRUNC(컬럼명|표현식, [n])
n은 절삭을 위한 자리 수로서, 마찬가지로 n이 양수면 소수점 자리를 절삭하고 음수면 정수 자리를 절삭합니다. 0이 기본값이기 때문에 생략하면 소수점에서 절삭합니다.
소수점 두 번째 자리까지 출력하는 SQL문입니다. 소수점 세 번째 자리부터 절삭합니다.
SELECT TRUNC(456.789,2) FROM dual; --> 456.78
정수로 출력하는 SQL문입니다. 소수점 자리를 절삭합니다.
SELECT TRUNC(456.789) FROM dual; --> 456
정수 두 번째 자리까지 출력하는 SQL문입니다. 정수 첫 번째 자리부터 절삭합니다.
SELECT TRUNC(456.789,-1) FROM dual; --> 450
3. MOD 함수
나누기를 한 후 나머지 값을 반환합니다.
MOD(컬럼명|표현식, n)
n은 나눌 값을 의미합니다. n이 0이면 값 자체를 반환합니다.
SELECT MOD(10,3) FROM dual; --> 1
SELECT MOD(10,0) FROM dual; --> 10
MOD 함수는 홀짝을 구분하는 데 활용될 수 있습니다. 어떤 숫자값을 2로 나눠서 나머지가 1이면 홀수, 0이면 짝수라는 점을 이용하는 것입니다. 다음은 사원번호가 홀수인 사원, 짝수인 사원을 각각 구하는 SQL문입니다. 사원번호를 2로 나누었을 때 나머지가 1인지 0인지에 따라 홀수, 짝수를 구분할 수 있습니다.
SELECT empno, ename FROM emp WHERE MOD(empno,2)=1; --> 홀수
SELECT empno, ename FROM emp WHERE MOD(empno,2)=0; --> 짝수
4. CEIL 함수
주어진 숫자보다 크거나 같은 최소 정수값을 반환합니다. 소수점 자리를 올린다고 이해할 수 있습니다.
SELECT CEIL(10.6) FROM dual; --> 11
SELECT CEIL(-10.6) FROM dual; --> -10
SELECT CEIL(10.2) FROM dual; --> 11
5. FLOOR 함수
주어진 숫자보다 작거나 같은 최대 정수값을 반환합니다. 소수점 자리를 내린다고 이해할 수 있습니다.
SELECT FLOOR(10.6) FROM dual; --> 10
SELECT FLOOR(-10.6) FROM dual; --> -11
SELECT FLOOR(10.2) FROM dual; --> 10
6. SIGN 함수
지정된 값이 양수인지 음수인지 0인지 판단할 수 있는 함수입니다. 양수면 1을 반환하고, 음수면 -1을 반환하며, 0이면 0을 반환합니다.
SELECT SIGN(100) FROM dual; --> 1
SELECT SIGN(-20) FROM dual; --> -1
SELECT SIGN(0) FROM dual; --> 0
월급이 1500보다 큰 사람을 검색하고자 할 때 SIGN 함수를 이용할 수도 있습니다. 월급이 1500보다 크면 SIGN(sal-1500)의 결과값이 1이 나오고, 1500이면 0이 나오며, 1500보다 작으면 -1이 나옵니다. 여기선 1500보다 큰 사람을 구하고자 하므로 WHERE절에 SIGN(sal-1500)=1이라는 조건을 붙입니다. 다음의 두 가지 SQL문이 동일한 결과를 출력하는 것을 확인할 수 있습니다.
SELECT empno, ename, sal FROM emp WHERE SIGN(sal-1500)=1;
SELECT empno, ename, sal FROM emp WHERE sal>1500;
단일행 함수 중 숫자처리 함수에 대해 알아보았습니다. 다음 글에서도 계속해서 단일행 함수를 정리해 보겠습니다.
'Database > Oracle' 카테고리의 다른 글
[Oracle SQL] SQL 함수 - 단일행 함수 (4) 변환 함수 (0) | 2022.05.10 |
---|---|
[Oracle SQL] SQL 함수 - 단일행 함수 (3) 날짜처리 함수 (0) | 2022.05.10 |
[Oracle SQL] SQL 함수 - 단일행 함수 (1) 문자처리 함수 (0) | 2022.05.08 |
[Oracle SQL] ORDER BY절 : 정렬 (0) | 2022.05.08 |
[Oracle SQL] WHERE절 - 논리 연산자 (AND, OR, NOT) (0) | 2022.05.08 |
댓글