숫자함수 #
숫자 함수란 수식 연산을 하는 함수로 연산 대상 즉, 매개변수나 반환 값이 대부분 숫자 형태다.
-
ABS(n) ABS함수는 매개변수로 숫자를 받아 그 절대값을 반환하는 함수다.
-입력 SELECT ABS(10), ABS(-10), ABS(-10.123) FROM DUAL; -결과 10, 10, 10.123
-
CEIL(n)과 FLOOR(n) CEIL함수는 매개변수 n과 같거나 가장 큰 정수를 반환한다.
-입력 SELECT CEIL(10.123) CEIL(10.541), CEIL(11.001) FROM DUAL; -결과 11, 11, 12
FLOOR함수는 CEIL함수와 반대로 매개변수 n보다 작거나 가장 큰 정수를 반환한다.
-입력 SELECT FLOOR(10.123), FLOOR(10.541), FLOOR(11.001) FROM DUAL; -출력 10,10,11
-
ROUND(n,i)와 TRUNC(n1, n2) ROUND 함수는 매개변수 n을 소수점 기준(i+1)번째에서 반올림한 결과를 반환한다. i는 생략할 수 있고 디폴트 값은 0, 즉 소수점 첫 번째 자리에서 반올림이 일어나 정수 부분의 일의 자리에 결과가 반영된다.
-입력 SELECT ROUND(10.154), ROUND(10.541), ROUND(11.001) FROM DUAL; -출력 10, 11, 11 -입력 SELECT ROUND(10.154, 1) ROUND(10.154, 2), ROUND(10.154, 3) -결과 10.2, 10.15, 10.154 -입력 SELECT ROUND(0, 3), ROUND(115.155, -1), ROUND(115.155, -2) FROM DUAL; -출력 0, 120, 100
TRUNC함수는 반올림을 하지 않고, n1을 소수점 기준 n2자리에서 무조건 잘라낸 결과를 반환한다. n2역시 생략할 수 있으며 디폴트 값은 0 이고, 양수일때는 소수점 기준으로 오른쪽, 음수일 때는 소수점 기준 왼쪽 자리에서 잘라낸다.
-입력 SELECT TRUNC(155.155), TRUNC(155.155, 1), TRUNC(155.155, 2), TRUNC(155.155, -2) FROM DUAL; -출력 155, 155.1, 155.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; -출력 9, 27, 27.0029664 -입력 SELECT POWER(-3, 3.0001) FROM DUAL; -출력 SQL. 오류 : ORA-01428: '-3' 인수가 범위를 벗어났습니다.
SQRT함수는 n의 제곱근을 반환한다.
-입력 SELECT SQRT(2), SQRT(5) FROM DUAL; -결과 1.41421356, 2.23606798
-
MOD(n2, n1)와 REMAINDER(n2, n1) MOD함수는 n2를 n1으로 나눈 나머지 값을 반환한다.
-입력 SELECT MOD(19, 4), MOD(19.123, 4.2) FROM DUAL; -결과 3, 2.323
REMAINDER함수 역시 n2를 n1으로 나눈 나머지 값을 반환하는데, 나머지를 구하는 내부적 연산 방법이 MOD함수와는 약간 다르다.
- MOD -> n2 - n1 * FLOOR(n2/n1)
-
REMAINDER -> n2 - n1 * ROUND(n2/n1)
-입력 SELECT REMIANDER(19, 4), REMAINDER(19.123, 4.2) FROM DUAL; -출력 -1, -1.877
-
EXP(n), LN(n) 그리고 LOG(n2, n1) EXP는 지수 함수로 e(e=2.71818183...)의 n제곱값을 반환하고, NM함수는 자연 로그 함수로 밑수가 e인 로그 함수다. 반면 LOG는 n2를 밑수로 하는 n1의 로그 값을 반환한다.
-입력 SELEC EXP(2), LN(2.713), LOG(10, 100) FROM DULA: -결과 7.3890561, 0.998055034, 2