본문 바로가기
DataBase/Oracle

함수/단일행 처리 함수) 숫자 처리 함수(abs, mod, ceil, round, floor, trunc)

by 박채니 2022. 4. 15.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


FUNCTION

- 일련의 작업 절차를 모아 놓은 database 객체

- 호출 시 인자를 전달하고 리턴 값을 받아 처리

- SQL의 function은 반드시 리턴 값을 가짐

함수 유형
단일행
처리 함수
문자 처리 함수
숫자 처리 함수
날짜 처리 함수
형변환 처리 함수
기타 함수
그룹
처리 함수
그룹마다 호출

 


단일행 처리 함수

- 매 행마다 함수 호출, 리턴된 값을 결과 집합에 반영

 

숫자 처리 함수

 

☞ abs()

- 절대값을 반환

select
    abs(10), abs(-10)
from
    dual;

 

☞ mod() 

- 나머지를 반환

select
    mod(10, 3)
from
    dual;

응용) 생일 날짜가 짝수인 사원 조회

select
    emp_name 사원명,
    emp_no 주민번호
from
    employee
where
    mod(substr(emp_no, 5, 2), 2) = 0;

 

☞ ceil(), round(), floor(), trunc()

- ceil() : 소수점 기준 올림 처리 (자릿수 옵션 없음)

- round() : 소수점 기준 반올림 처리 (자릿수 옵션 있음)

- floor() : 소수점 기준 버림 처리 (자릿수 옵션 없음)

- trunc() : 소수점 기준 버림 처리 (자릿수 옵션 있음)

select
    ceil(234.56) 올림,
    round(234.56) 반올림,
    floor(234.56) 버림,
    trunc(234.56) 버림
from
    dual;

 

만약 소수점 첫번째 자리까지 표시해야 한다면 어떻게 해야할까요?

round와 trunc는 자릿수 옵션이 있기 때문에 자릿수를 지정해주면 되지만, ceil/floor는 자릿수 옵션이 없습니다.

따라서 10을 곱하고 10을 다시 나누어주어야 합니다.

select
--    ceil(234.56) 올림,
--    round(234.56) 반올림,
--    floor(234.56) 버림,
--    trunc(234.56) 버림,
    ceil(234.56*10) / 10 소수점첫째자리올림,
    round(234.56, 1) 소수점첫째자리반올림,
    floor(234.56 * 10) / 10 소수점첫째자리버림,
    trunc(234.56, 1) 소수점첫째자리버림
from
    dual;