③ ROUND(n, i)와 TRUNC(n1, n2)
ROUND 함수는 매개변수 n을 소수점 기준 (i+1)번 째에서 반올림한 결과를 반환한다. i는 생략할 수 있고 디폴트 값은 0, 즉 소수점 첫 번째 자리에서 반올림이 일어나 정수 부분의 일의 자리에 결과가 반영된다.
입력
SELECT ROUND(10.154), ROUND(10.541), ROUND(11.001)
FROM DUAL;
결과
ROUND(10.154) ROUND(10.541) ROUND(11.001)
------------- ------------- ---------------
10 11 11
입력
SELECT ROUND(10.154, 1), ROUND(10.154, 2), ROUND(10.154, 3)
FROM DUAL;
결과
ROUND(10.154,1) ROUND(10.154,2) ROUND(10.154,3)
---------------- --------------- ---------------
10.2 10.15 10.154
ROUND(10.154, 3)는 3+1, 즉 네 번째 자리가 0이므로 결과는 10.154가 반환되었다. n이 0일 때는 i에 입력된 숫자에 상관없이 무조건 0을 반환하며, i가 음수이면 소수점을 기준으로 왼쪽 i번째에서 반올림이 일어난다.
입력
SELECT ROUND(0, 3), ROUND(115.155, -1), ROUND(115.155, -2)
FROM DUAL;
결과
ROUND(0,3) ROUND(115.155,-1) ROUND(115.155,-2)
---------- ----------------- -----------------
0 120 100
첫 번째는 n이 0이므로 무조건 0이 반환됐고 두 번째는 i가 -1이므로 115에서 5가 반올림되어 120이, 세 번째 컬럼에는 -2가 입력되어 115에서 백의 자리 1이 반올림되어 결과는 100이 되었다.
TRUNC 함수는 반올림을 하지 않고 n1을 소수점 기준 n2자리에서 무조건 잘라낸 결과를 반환한다. n2 역시 생략할 수 있으며 디폴트 값은 0이고, 양수일 때는 소수점 기준으로 오른쪽, 음수일 때는 소수점 기준 왼쪽 자리에서 잘라낸다.
입력
SELECT TRUNC(115.155), TRUNC(115.155, 1), TRUNC(115.155, 2), TRUNC(115.155, -2)
FROM DUAL;
결과
TRUNC(115.155) TRUNC(115.155,1) TRUNC(115.155,2) TRUNC(115.155,-2)
--------------- ---------------- ---------------- ------------------
115 115.1 115.15 100
④ POWER(n2, n1)와 SQRT(n)
POWER 함수는 n2를 n1 제곱한 결과를 반환한다. n1은 정수와 실수 모두 올 수 있는데, n2가 음수일 때 n1은 정수만 올 수 있다.
입력
SELECT POWER(3, 2), POWER(3, 3), POWER(3, 3.0001)
FROM DUAL;
결과
POWER(3,2) POWER(3,3) POWER(3,3.0001)
---------- ---------- ----------------
9 27 27.0029664
입력
SELECT POWER(-3, 3.0001)
FROM DUAL;
결과
SQL. 오류: ORA-01428: '-3' 인수가 범위를 벗어났습니다.
SQRT 함수는 n의 제곱근을 반환한다.
입력
SELECT SQRT(2), SQRT(5)
FROM DUAL;
결과
SQRT(2) SQRT(5)
-------------- --------------
1.41421356 2.23606798
⑤ MOD(n2, n1)와 REMAINDER(n2, n1)
MOD 함수는 n2를 n1으로 나눈 나머지 값을 반환한다.
입력
SELECT MOD(19,4), MOD(19.123, 4.2)
FROM DUAL;
결과
MOD(19,4) MOD(19.123,4.2)
--------- ---------------
3 2.323
REMAINDER 함수 역시 n2를 n1으로 나눈 나머지 값을 반환하는데, 나머지를 구하는 내부적 연산 방법이 MOD 함수와는 약간 다르다.
• MOD → n2 - n1 * FLOOR (n2/n1)
• REMAINDER → n2 - n1 * ROUND (n2/n1)
입력
SELECT REMAINDER(19,4), REMAINDER(19.123, 4.2)
FROM DUAL;
결과
REMAINDER(19,4) REMAINDER(19.123,4.2)
--------------- ----------------------
-1 -1.877
⑥ EXP(n), LN(n) 그리고 LOG(n2, n1)
EXP는 지수 함수로 e(e=2.71828183…)의 n제곱 값을 반환하고, LN 함수는 자연 로그 함수로 밑수가 e인 로그 함수다. 반면 LOG는 n2를 밑수로 하는 n1의 로그 값을 반환한다.
입력
SELECT EXP(2), LN(2.713), LOG(10, 100)
FROM DUAL;
결과
EXP(2) LN(2.713) LOG(10,100)
---------- ------------ -----------
7.3890561 0.998055034 2