728x90
반응형
숫자 함수

 

- 숫자 함수는 주로 숫자 계산과 추가 처리에 사용

- 숫자 함수 종류

함수 설명 결과
CEIL() 정수 올림 CEIL(12.345) 13
FLOOR() 정수 내림 FLOOR(12.345) 12
ROUND() 반올림 ROUND(12.345, 0) 12
TRUNC() 절삭 TRUNC(12.345, 1) 12.3
MOD() 나눈 나머지 MOD(12, 5) 2
SIGN() 양수, 음수, 0구분 SIGN(12) 1
POWER() 거듭제곱 POWER(3, 3) 27
SQRT() 제곱근 SQRT(4) 2

 

- CEIL() / FLOOR()

SELECT salary, salary/21, CEIL(salary/21), FLOOR(salary/21)
FROM employees;

 

- ROUND() / TRUNC()

SELECT
    salary,
    salary/21,
    ROUND(salary/21), ROUND(salary/21, 2), ROUND(salary/21, -1),
    TRUNC(salary/21), TRUNC(salary/21, 2), TRUNC(salary/21, -1)
FROM employees;

 

- MOD()

SELECT salary, salary/21, MOD(salary, 21)
FROM employees;

 

- SIGN()

SELECT SIGN(-123), SIGN(0), SIGN(123)
FROM dual;

 

- POWER() / SQRT()

SELECT POWER(3, 3), SQRT(4)
FROM dual;

 


날짜 함수

 

- 데이터 중의 날짜 형식을 가지는 데이터를 계산하기 위해서 사용되는 날짜 함수

  • 날짜(Date) + 숫자(Number) = 날짜에 숫자 이후의 날짜
  • 날짜(Date) - 숫자(Number) = 날짜에 숫자 이전의 날짜
  • 날짜(Date) + 날짜(Date) = 날짜에 날짜를 더한 날짜
  • 날짜(Date) - 날짜(Date) = 날짜에 날짜를 뺀 날짜

- SYSDATE

: 오라클이 설치된 시스템의 현재 날짜를 반환

SELECT SYSDATE, SYSDATE + 1, SYSDATE - 1
FROM dual;

 

- 날짜 함수

함수 설명 결과
MONTH_BETWEEN() 두 날짜 사이의 개월 수 계산 MONTH_BEETWEEN
(SYSDATE, hire_date)
218.683
ADD_MONTHS() 날짜에 지정한 개월 수를 더함 ADD_MONTHS
(hire_date, 3)
03/09/17
NEXT_DAY() 돌아오는 요일의 날짜 반환 NEXT_DAY(hire_date, 3) 03/06/24
LAST_DAY() 월의 마지막 날짜를 계산 LAST_DAY(hire_date) 03/06/30
ROUND() 날짜를 가장 가까운 연도나 월로 반올림 ROUND(hire_date, 'YEAR') 03/01/01
TRUNC() 날짜를 가장 가까운 연도 또는 월로 절삭 TRUNC(hire_date, 'MONTH') 03/06/01

 

- MONTH_BETWEEN()

SELECT SYSDATE, hire_date, MONTHS_BETWEEN(SYSDATE, hire_date)
FROM employees;

 

- ADD_MONTH()

SELECT hire_date,
    ADD_MONTHS(hire_date, 2), ADD_MONTHS(hire_date, -2)
FROM employees;

 

- NEXT_DAY() / LAST_DAY()

SELECT
    hire_date,
    NEXT_DAY(hire_date, 3),
    NEXT_DAY(hire_date, '수요일'),
    LAST_DAY(hire_date)
FROM employees;

 

- ROUND() / TRUNC()

SELECT
    hire_date,
    ROUND(hire_date, 'YEAR'),
    ROUND(hire_date, 'MONTH')
FROM employees;

 


형 변환 함수

 

- 오라클에서 제공하는 데이터 타입을 필요에 따라 변환

 

- 자동(암묵적) 변환

숫자(NUMBER) <> 문자(CHAR/VARCHAR2) <> 날짜(DATE)

SELECT 1 + '2'
FROM dual;

-- 3

 

- 수동(명시적) 변환

숫자(TO_CHAR / TO_NUMBER) <> 문자(CHAR/VARCHAR2) <> 날짜(TO_DATE() / TO_CHAR())

 

TO_CHAR(): 숫자와 날짜 데이터를 문자 데이터로 변환

SELECT TO_CHAR(SYSDATE, 'CC AD Q')
FROM dual;

SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD')
FROM dual;

TO_NUMBER(): 문자 데이터를 숫자 데이터로 변환

TO_DATE(): 문자 데이터를 날짜 데이터로 변환 

 


일반 함수

 

- NVL(): NULL 값을 특정한 값으로 치환하는 함수

SELECT department_name, NVL(manager_id, 100)
FROM departments;
SELECT NVL(state_province, 'None')
FROM locations
ORDER BY state_province;

 

- NVL2(): NULL 값인 경우와 아닌 경우를 구분하여 특정한 값으로 치환하는 함수

SELECT department_name, NVL2(manager_id, '관리자 있음', '관리자 없음')
FROM departments;
SELECT city, NVL2(state_province, '주소 있음', '주소 없음')
FROM locations
ORDER BY state_province;

 

- DECODE(): 데이터가 조건 값과 일치하면 치환 값을 출력하고, 일치하지 않으면 기본값을 출력하는 조건 논리 처리 함수

SELECT job_title, min_salary,
    DECODE(min_salary, 2500, min_salary * 1.1, min_salary)
FROM jobs;

 

- CASE(): 복잡한 논리 조건 처리 함수

SELECT job_title, min_salary,
    CASE
    WHEN min_salary < 4000 THEN min_salary * 1.2
    WHEN min_salary BETWEEN 4000 AND 6000 THEN min_salary * 1.1
    ELSE min_salary
    END AS 최소급여변경
FROM jobs;

 

- RANK(), DENSE_RANK(), ROW_NUMBER() 함수

  • RANK(): 공통 순위는 건너뛰어 다음 순위를 출력하는 순위 함수
  • DENSE_RANK(): 공통 순위를 건너뛰지 않고, 다음 순위를 출력하는 순위 함수
  • ROW_NUMBER(): 공통 순위 없이 순위를 출력하는 순위 함수
728x90
반응형

'Language > RDBMS' 카테고리의 다른 글

[DML_SELECT] JOIN 연산  (0) 2023.03.03
[DML_SELECT] Multi-Row Function  (0) 2023.03.03
[DML_SELECT] SQL 함수(문자)  (0) 2023.03.03
[DML_SELECT] SQL 연산자  (0) 2023.03.02
[DML_SELECT] ORDER BY 구문을 활용한 정렬  (0) 2023.03.02

+ Recent posts