숫자함수
DUAL은 가상의 테이블
ABS(n)
매개변수로 숫자를 받아 절대값 반환
select abs(10) --10
,abs(-10) --10
, abs(-10.123) --10.123
from dual;
CEIL(n)
매개변수로 n과 '같거나' 가장 큰 정수를 반환
select ceil(10.00) --10
, ceil(10.01) --11
, ceil(10.001) --11
from dual;
FLOOR(n)
매개변수 n보다 작으면서 가장 큰 정수를 반환
select floor(10.123) --10
, floor(10.123) --10
, floor(10.123) -10
from dual;
ROUND(n, i)
매개변수 n을 소수점 기준(i+1)번째에서 반올림한 결과를 반환
디폴트 (0)
N이 0일때 i에 입력된 숫자에 상관없이 0을 반환
i가 음수이면 소수점 기준으로 왼쪽 i번째에서 반올림이 일어남
select round(10.154) --10
, round(10.154) --10
, round(10.154) --10
from dual;
select round(10.154,1) --10.2
, round(10.154,2) --10.15
, round(10.154,3) --10.154
from dual;
select round(0,3) --0
, round(115.155,-1) --120
, round(115.155,-2) --100
from dual;
TRUNC(n,i)
반올림을 하지 않고 n1을 소수점 기준 n2자리에서 무조건 잘라냄
디폴트 (0)
양수일 때는 소수점 기준으로 오른쪽, 음수일 때는 소수점 기준으로 왼쪽 자리에서 잘라냄
select trunc(115.155) --115
, trunc(115.155,1) --115.1
, trunc(115.155,2) --115.15
, trunc(115.155,3) --115.155
from dual;
ex>
employees 테이블에서
사번, 사원명, 월급, 일당(월급/30) 소수점 셋째자리에서 반올림 하여 일당이 많은 순으로 정렬
사번 사원명 월급 일당
100 Steven King 24000 774.19
102 Lex De Haan 17000 548.39
101 Neena Kochhar 17000 548.39
145 John Russell 14000 451.61
select employee_id, emp_name, salary, round(salary/30, 2)
from employees
order by 4 desc;
널조회
널인 경우 조회 IS NULL
select *
from EMPLOYEES
where MEMBER_ID IS null;
널이 아닌 경우 조회 IS NOT NULL
select *
from employees
where member_id is not null;
power(n2,n1)
n2를 n1제곱한 결과를 반환
select power(3,1) -- 3
, power(3,2) -- 9
, power(3,3) -- 27
from dual;
mode(m,n)
m을 n으로 나누었을 때 나머지를 반환
select mod(19,4) -- 3
, mod(19.123,4.2) -- 2.323
, mod(4,2) -- 0
from dual;
sort(n)
n의 제곱근 반환
select sqrt(4) -- 2
, sqrt(5) -- 2.2360...
from dual;
REMAINDER
MOD와 동일 하지만 내부적으로는 MOD는 FLOOR함수가 사용되고
REMAINDER는 ROUND 함수가 사용
동작방식
MOD : n2-n1*FLOOR(n2/n1)
REMAINDER : n2-n1*ROUND(n2/n1)
select remainder(19,4) -- -1
, remainder(19.123,4.2) -- -1.877
from dual;