본문 바로가기
Dev. Handbook/SQL, Oracle, MariaDB

[Oracle] 내장 함수 : 숫자 함수, 수학 함수

by breezyday 2022. 5. 2.

Oracle에서 사용할 수 있는 숫자, 수학 함수들은 다음과 같습니다.

1. 숫자 함수, 수학 함수

 

함수명 양식 기능 설명
ABC ABS(n) 절대값 반환
SIN, COS, TAN
ASIN, ACOS, ATAN
ATAN2
SIN(n), COS(n), TAN(n)
ASIN(n), ATAN(n), ATAN(n)
ATAN2(n1, n2)
삼각함수 관련함수
n은 라디안값으로 입력
라디안 : 각도 * 2 * PI / 360
CEIL
FlOOR
ROUND
CEIL(n)
FlOOR(n)
ROUND(n, i)
올림
버림
반올림, i+1 자리에서 반올림, i기본값은 1
EXP
LN
LOG
EXP(n)
LN(n)
LOG(base, n)
e의 n제곱 값을 반환
자연 로그 함수로 밑수가 e인 로그함수
base를 밑수로 하는 n의 로그값을 반환
MOD MOD(n1, n2) n1을 n2로 나눈 나머지 값을 반환
POWER
SQRT
POWER(n1, n2)
SQRT(n)
n1를 n2 제곱한 결과를 반환, n2는 양수만
n의 제곱근을 반환
SIGN SIGN(n) 양수면 1, 0이면 0, 음수이면 -1을 반환
TRUNC TRUNC(n, i) 숫자(n)를 소수점을 기준으로 정수(i) 위치까지 구하고 나머지는 버림, i의 기본값은 0, i가 음수일 경우 소수점 기준 왼쪽 i번째에서 버림

1.1 ABS(n)

숫자의 절댓값을 계산

 

SELECT ABS(10), ABS(-10), ABS(-10.123) FROM DUAL;
       -------  --------  ------------
       10       10        10.123

1.2 SIN(n), COS(n), TAN(n), ACOS(n), ASIN(n), ATAN(n) ATAN2(n1, n2)

삼각 함수와 관련 함수

 

-- SIN(30도) = 1/2
-- RADIAN = 각도 * 2 * PI / 360
-- PI = ACOS(-1) = 3.14159265359...
SELECT SIN(30*2*3.1416/360), SIN(30*2*ACOS(-1)/360) FROM DUAL;
       --------------------  ----------------------
       0.5000010603626028226505930991964310868557
                             0.5000000000000000000000000000000000000005

-- COS(30도) = 1/2
SELECT COS(60*2*3.1416/360), COS(60*2*ACOS(-1)/360) FROM DUAL;
       --------------------  ----------------------
       0.4999978792725456169998841491040422896193
                             0.4999999999999999999999999999999999999946


-- TAN(45도) = 1
SELECT TAN(45*2*3.1416/360), TAN(45*2*ACOS(-1)/360) FROM DUAL;
       --------------------  ----------------------
       1.00000367321184961515462875841648317896
                             1

1.3 CEIL(n), FlOOR(n), ROUND(n, i)

올림, 내림, 반올림을 계산

 

CEIL(n) : n의 올림값을 반환

 

SELECT CEIL(10.123), CEIL(10.541), CEIL(11.001) FROM DUAL;
       ------------  ------------  ------------
       11            11            12

 

FLOOR(num) : n의 버림 값을 반환

 

SELECT FLOOR(10.123), FLOOR(10.541), FLOOR(11.001) FROM DUAL;
       -------------  -------------  -------------
       10             10             11

 

ROUND(num, i) : n을 소수 i+1번째 자리에서 반올림한 값을 반환, 기본값은 소수 첫 번째 자리에서 반올림, i가 음수이면 소수점을 기준으로 왼쪽 i번째에서 반올림

 

-- i를 생략한 경우
SELECT ROUND(10.154), ROUND(10.541), ROUND(11.001) FROM DUAL;
       -------------  -------------  -------------
       10             11             11

-- i를 입력한 경우
SELECT ROUND(10.154,1), ROUND(10.154, 2), ROUND(10.154, 3) FROM DUAL;
       ---------------  ----------------  ----------------
       10.2             10.15             10.154
       
-- i가 음수인 경우
SELECT ROUND(0,3), ROUND(115.155,-1), ROUND(115.155,-2) FROM DUAL;
       ----------  -----------------  -----------------
       0           120                100

 

1.4 EXP(n), LN(n), LOG(base, n)

지수, 로그 관련 함수

 

EXP  : e의 n제곱 값을 반환

LN    : 자연 로그 함수로 밑수가 e인 로그함수

LOG  : base를 밑수로 하는 n의 로그 값을 반환

 

SELECT EXP(2),    LN(2.713),   LOG(10, 100) FROM DUAL;
       ---------  -----------  ------------
       7.3890561  0.998055034  2

1.5 MOD(n1, n2)

n1을 n2로 나눈 나머지 값을 반환

 

SELECT MOD(19, 4), MOD(19.123, 4.2) FROM DUAL;
       ----------  ----------------
       3           2.323

1.6 POWER(n1, n2), SQRT(n)

거듭제곱 값 및 제곱근 함수

 

POWER(n1, n2) : n1를 n2 제곱한 결과를 반환, n2는 음수를 허용하지 않음.

 

SELECT POWER(3,2), POWER(3,3), POWER(3, 3.001) FROM DUAL;
       ----------  ----------  ---------------
       9           27          27.0296788

 

SQRT(n)  : n의 제곱근을 반환

 

SELECT SORT(2), SQRT(5) FROM DUAL;
       ----------  ----------
       1.41421356  2.23606798

 

1.7 SIGN(n)

SIGN(n) : 숫자(n)의 양수, 0, 음수를 판별,

양수면 1, 0이면 0, 음수이면 -1을 반환

 

SELECT SIGN(1.1), SIGN(0), SIGN(-10) FROM DUAL;
       ---------  -------  ---------
       1          0        -1

1.8 TRUNC(n, i)

TRUNC(n, i) : 숫자(n)를 소수점을 기준으로 정수(i) 위치까지 구하고 나머지는 버림,

i의 기본값은 0,

i가 음수일 경우 소수점 기준 왼쪽 i번째에서 버림

 

-- i 기본값은 0
SELECT TRUNC(115.155), TRUNC(115.155, 1) FROM DUAL;
       --------------  -----------------
       115             115.1

-- i가 양수인 경우, 음수인 경우
SELECT TRUNC(115.155, 2), TRUNC(115.155, -2) FROM DUAL;
       -----------------  ------------------
       115.15             100

 

 

 

참고

https://docs.oracle.com/database/121/SQLRF/functions002.htm#SQLRF51178

 

 

 

 

 

댓글