평범한 연구소

[오라클 SQL] 숫자 함수 본문

DB|SQL

[오라클 SQL] 숫자 함수

soyeonisgood 2022. 8. 10. 20:46

단일 행 함수  (Single-Row Funtions)

  • 선택 목록, WHERE절, START WITH 및 CONNECT BY절, HAVING절에서 사용 가능

 

 

숫자 함수 (Nemeric Functions)

숫자 함수 설명
ABS(n) 절대값 반환
SIGN(n) 부호 반환 (양수:1, 0:0, 음수:-1)
MOD(n2, n1) n2를 n1로 나눈 나머지 반환. n1=0, n2반환.
내부 연산 방식: n2 - n1 * FLOOR(n2/n1)
REMAINDER(n2, n1) n2를 n1로 나눈 나머지 반환. n1=0, n2반환. MOD()와 유사하나 수식에 ROUND 사용. 주로 MOD() 사용.
내부 연산 방식: n2 - n1 * ROUND(n2/n1)
CEIL(n) n보다 크거나 같은 가장 작은 정수 반환
FLOOR(n) n이하의 가장 큰 정수 반환 
TRUNC(n1, [n2]) n2소수점 이하 자릿수로 자른 n1 반환. n2 생략 시 n1은 소숫점 전부 잘림. n2는 소수점 왼쪽에서 n2자리만큼 자르므로 음수일 수 있음
SIN(n), COS(n), TAN(n) ...  삼각함수 등
EXP(n), POWER(n2,n1), SQRT(n), LOG(n2,n1), LN(n) 지수, 거듭제곱, 제곱근, 로그, 자연로그 등

 

  • ABS(n): 절대값
    • SELECT ABS(20), ABS(-20) FROM dual; -- 20 -20

 

  • SIGN(n): 부호
    • SELECT SIGN(20), SIGN(-20), SIGN(0) FROM dual; -- 1 -1 0

 

  • MOD(n2, n1): 나머지.
    • n2-n1*FLOOR(n2/n1)  -- 대부분 MOD 사용.
  • REMAINDER(n2, n1): 나머지.
    • n2-n1*ROUND(n2/n1)
    •  SELECT MOD(11, 4) FROM dual; -- 3
       
       SELECT 13 - 5 * FLOOR(13/5) FROM dual; -- 소수점 절삭
       SELECT MOD(13, 5) FROM dual; -- 3
       
       SELECT 13/5 FROM dual; -- 2.6
       SELECT ROUND(13/5) FROM dual; -- 3
       SELECT 13 - 5 * ROUND(13/5) FROM dual; -- -2
       SELECT REMAINDER(13, 5) FROM dual; -- -2
       
       SELECT REMAINDER(13, 6) FROM dual; -- -1

 

  •  CEIL(n): n보다 크거나 같은 가장 작은 정수
    • SELECT CEIL(20.5), CEIL(-20.5), CEIL(20) FROM dual; -- 21 -20 20

 

  • FLOOR(n): n 이하의 가장 큰 정수 (가장 가까운 큰 정수)
    • SELECT FLOOR(20.5), FLOOR(-20.5), FLOOR(20) FROM dual; -- 20 -21 20

 

  • ROUND(n [, integer ]): 반올림
    • SELECT ROUND(15.683) FROM dual; -- 16:소수점 첫째자리 반올림   ROUND(15.683,0) 동일. 
    • SELECT ROUND(15.683, 1) FROM dual; -- 15.7:소수점 둘째자리에서 반올림
    • SELECT ROUND(15.683, 2) FROM dual; -- 15.68
    • SELECT ROUND(15.683, -1) FROM dual; -- 20. 음수이면 소수점 왼쪽에서 반올림

 

  • TRUNC(n1 [, n2 ]): 절삭
    • SELECT TRUNC(15.683) FROM dual; -- 15
    • SELECT TRUNC(15.683, 1) FROM dual; -- 15.6
    • SELECT TRUNC(15.683, 2) FROM dual; -- 15.68
    • SELECT TRUNC(15.683, -1) FROM dual; -- 10