오라클〃[공부]5. Oracle 숫자 내장함수(Function)

반응형


셀렉트 구문의 심화예제에서 보았던 Round나 to_char처럼 어떤 연산이나 작업을 수행하게 하는 내장함수를 이번글 부터 정리해보겠습니다.


숫자함수, 문자함수, 날짜함수, 변환함수, 기타함수(decode와 case등) 순서로 정리할 예정이며, DUAL테이블을 보통 예제로 사용하겠지만 혹시나 필요하다면 오라클 기본 사용자인 SCOTT계정을 통해 예제를 실습해볼테니 참고하시길 바래요.




 내장 함수란?


1. 공통적으로 자주 사용하는 기능을 함수(Function)라는 데이터베이스 오브젝트로 정의해서 만들어 두고 필요할 때마다 호출하여 사용하는 것. 오라클에서 함수는 어떤 연산이나 작업을 수행하고 결과값을 반환합니다. 

( ※ 저장 프로시저는 작업에 필요한 기능을 수행하고 결과값을 반환하지 않습니다. )


2. 오라클 자체에서 자주 사용되는 기능들을 쉽게 호출하여 사용할 수 있도록 제공되는 내장함수(SQL 함수)와 사용자가 필요에 따라 직접 작성한 사용자 정의 함수로 구분할 수 있습니다.


3. 함수는 독립적으로 실행되는 것이 아니라 SQL 문장에서 사용자 호출에 의해 실행이 됩니다. 호출하는 측에서는 필요한 기능이 구현된 함수를 선택하여 수행에 필요한 자료를 넘겨줌으로 함수가 수행되고 그 처리된 결과값을 반환받아 처리합니다.


4. SQL함수는 SQL문장의 특정 위치에서만 사용이 가능합니다. ★ 함수 수행 후 반환되는 값들이 사용될 수 있는곳!

ex) ① SELECT문의 LIST / WHERE절 / HAVING절 / START WITH절 

     ② INSERT문의 INTO절 

     ③ UPDATE문의 SET절




 숫자 내장함수


숫자형 데이터를 가지고 연산을 수행하여 그 결과 값을 반환하는 기능을 수행합니다. 참고로 DUAL테이블은 dummy테이블로 sys스키마에 속하며 이를 시노님(동의어)로 생성하여 모든계정에서 사용가능한 테스트용 테이블입니다.


1. ABS( n ) → 절대값을 반환하는 함수. 




2. SIGN( n ) → [양수 / 0 / 음수] 여부를 판단하여 [1 / 0 / -1]을 반환.




3. ROUND( n , i ) → 소수점 i+1번째 자리에서 반올림하여 결과를 반환. 




4. TRUNC( n , i ) → 반올림하지 않고 잘라내기 후 결과를 반환.




5. CEIL( n ) → n과 같지 않다면 올림. 




6. FLOOR( n ) → n과 같지 않다면 버림.




7. MOD(n1, n2) → n1을 n2로 나눈 나머지 값을 반환. n2가 0이면 n1을 반환

※ Number타입의 데이터 타입만 가능





8. REMAINDER(n1, n2) → 7번의 MOD와 기능은 같음. n2가 0이면 오류 

※ Number, Binary_float, Binary_double 데이터 타입 가능



★★ MOD함수와 REMAINDER함수가 실수 연산시 다른 결과가 나오는 이유는 나머지값을 구하는 로직에 있어서 MOD함수는 floor()를, REMAINDER함수는 round()를 사용하기 때문에 다른 결과가 나올 수 있습니다. ★★ 

*** mod함수의 나머지 값을 구하는 내부로직 *** 

→ 나머지값 = n1 - n2 * floor(n1/n2)

*** remainder함수의 나머지 값을 구하는 내부로직 ***

→ 나머지값 = n1 - n2 * round(n1/n2) 




9. POWER(n1, n2) → n1의 값에 대해 n2승(제곱값)을 구하여 반환하는 함수





10. SQRT( n ) → n의 제곱근 값을 반환하는 함수





 11. 나머지 숫자형 함수들

① SIN(n) , COS(n) , TAN(n) → 삼각함수의 사인, 코사인, 탄젠트 값을 구하는 함수.

② ASIN(n), ACOS(n), ATAN(n) → 역삼각함수의 사인, 코사인, 탄젠트 값을 구하는 함수.

③ SINH(n), COSH(n), TANH(n) → 쌍곡선(Hyperbolic) 삼각함수의 사인, 코사인, 탄젠트 값을 구하는 함수.

④ LOG(n1, n2), LN(m ,n) → Log값을 구해서 반환하는 함수.

⑤ EXP(n) → 자연대수의 값을 구해서 반환하는 함수.

⑥ NANVL(n1, n2) → 입력값이 숫치가 아니면 대체값 n2로 반환하고, 수치이면 입력값 n1을 반환.

⑦ WIDTH_BUCKET(n1, min, max, num_buckets) → 범위 min부터 max까지 buckets구간으로 나누어 n1이 몇번째에 있는지 계산하여 반환하는 함수. 



반응형