본문 바로가기
Database/Oracle

[Oracle SQL] SQL 함수 - 단일행 함수 (2) 숫자처리 함수

by Amy IT 2022. 5. 9.

이번 글에서는 단일행 함수 중 숫자처리 함수를 정리해 보겠습니다.

 

함수 설명
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;

 

 

단일행 함수 중 숫자처리 함수에 대해 알아보았습니다. 다음 글에서도 계속해서 단일행 함수를 정리해 보겠습니다.

 

 

댓글