Oracle/SQL

내장함수

psys 2020. 6. 5. 12:48
728x90

숫자함수

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;

 

'Oracle > SQL' 카테고리의 다른 글

한정자  (0) 2020.06.10
정규표현식  (0) 2020.06.10
표현식과 조건식  (1) 2020.06.03
DDL(Data Define Language, 데이터정의어)  (0) 2020.06.03
수식연산자  (0) 2020.06.03