IT

오라클 함수(FUNCTION)

carnival6103 2025. 1. 30. 22:32
반응형

오라클 데이터베이스에서 제공하는 모든 내장 함수를 예시와 함께 설명하는 것은 매우 방대한 작업입니다.

하지만 주요 함수들을 카테고리별로 정리하고, 각 함수의 예시를 포함하여 설명해 드리겠습니다.

이 목록은 자주 사용되는 함수들을 중심으로 구성되었습니다.

1. 문자열 함수 (String Functions)

  • UPPER: 문자열을 대문자로 변환합니다.
  SELECT UPPER('oracle database') FROM DUAL;
  -- 결과: 'ORACLE DATABASE'
  • LOWER: 문자열을 소문자로 변환합니다.
  SELECT LOWER('ORACLE DATABASE') FROM DUAL;
  -- 결과: 'oracle database'
  • INITCAP: 문자열의 첫 글자를 대문자로, 나머지는 소문자로 변환합니다.
  SELECT INITCAP('oracle database') FROM DUAL;
  -- 결과: 'Oracle Database'
  • SUBSTR: 문자열의 일부를 추출합니다.
  SELECT SUBSTR('oracle database', 1, 6) FROM DUAL;
  -- 결과: 'oracle'
  • INSTR: 문자열 내에서 특정 문자열의 위치를 반환합니다.
  SELECT INSTR('oracle database', 'database') FROM DUAL;
  -- 결과: 8
  • REPLACE: 문자열 내의 특정 문자열을 다른 문자열로 대체합니다.
  SELECT REPLACE('oracle database', 'database', 'DB') FROM DUAL;
  -- 결과: 'oracle DB'

2. 숫자 함수 (Number Functions)

  • ROUND: 숫자를 지정된 소수점 자리로 반올림합니다.
  SELECT ROUND(123.456, 2) FROM DUAL;
  -- 결과: 123.46
  • TRUNC: 숫자를 지정된 소수점 자리로 자릅니다.
  SELECT TRUNC(123.456, 2) FROM DUAL;
  -- 결과: 123.45
  • MOD: 나머지를 반환합니다.
  SELECT MOD(10, 3) FROM DUAL;
  -- 결과: 1
  • ABS: 절대값을 반환합니다.
  SELECT ABS(-15) FROM DUAL;
  -- 결과: 15
  • POWER: 거듭제곱 값을 반환합니다.
  SELECT POWER(2, 3) FROM DUAL;
  -- 결과: 8

3. 날짜 함수 (Date Functions)

  • SYSDATE: 현재 날짜와 시간을 반환합니다.
  SELECT SYSDATE FROM DUAL;
  -- 결과: 현재 날짜와 시간 (예: 2025-01-30 22:30:00)
  • ADD_MONTHS: 지정된 개월 수만큼 날짜를 더합니다.
  SELECT ADD_MONTHS(SYSDATE, 6) FROM DUAL;
  -- 결과: 현재 날짜에서 6개월 후의 날짜
  • MONTHS_BETWEEN: 두 날짜 사이의 개월 수를 반환합니다.
  SELECT MONTHS_BETWEEN(SYSDATE, '2025-01-01') FROM DUAL;
  -- 결과: 현재 날짜와 2025-01-01 사이의 개월 수
  • NEXT_DAY: 지정된 요일의 다음 날짜를 반환합니다.
  SELECT NEXT_DAY(SYSDATE, 'MONDAY') FROM DUAL;
  -- 결과: 현재 날짜 기준 다음 월요일의 날짜
  • LAST_DAY: 주어진 날짜의 해당 월의 마지막 날짜를 반환합니다.
  SELECT LAST_DAY(SYSDATE) FROM DUAL;
  -- 결과: 현재 날짜가 속한 월의 마지막 날짜

4. 변환 함수 (Conversion Functions)

  • TO_CHAR: 숫자나 날짜 데이터를 문자열로 변환합니다.
  SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
  -- 결과: '2025-01-30'
  • TO_NUMBER: 문자열을 숫자로 변환합니다.
  SELECT TO_NUMBER('12345') FROM DUAL;
  -- 결과: 12345
  • TO_DATE: 문자열을 날짜로 변환합니다.
  SELECT TO_DATE('2025-01-30', 'YYYY-MM-DD') FROM DUAL;
  -- 결과: 2025-01-30

5. 일반 함수 (General Functions)

  • NVL: NULL 값을 다른 값으로 대체합니다.
  SELECT NVL(commission_pct, 0) FROM employees;
  -- 결과: commission_pct가 NULL이면 0으로 대체
  • DECODE: 조건에 따라 다른 값을 반환합니다.
  SELECT DECODE(department_id, 10, 'ADMIN', 20, 'SALES', 'OTHER') FROM employees;
  -- 결과: department_id에 따라 다른 문자열 반환

6. 집계 함수 (Aggregate Functions)

  • SUM: 열의 합계를 구합니다.
  SELECT SUM(salary) FROM employees;
  -- 결과: 모든 직원의 급여 합계
  • AVG: 열의 평균을 구합니다.
  SELECT AVG(salary) FROM employees;
  -- 결과: 모든 직원의 평균 급여
  • COUNT: 열의 개수를 셉니다.
  SELECT COUNT(*) FROM employees;
  -- 결과: 직원 수

7. 분석 함수 (Analytic Functions)

  • ROW_NUMBER: 결과 집합 내에서 각 행의 순번을 반환합니다.
  SELECT employee_id, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num FROM employees;
  -- 결과: 급여 순으로 정렬된 각 직원의 순번
  • RANK: 결과 집합 내에서 각 행의 순위를 반환합니다.
  SELECT employee_id, salary, RANK() OVER (ORDER BY salary DESC) AS rank FROM employees;
  -- 결과: 급여 순으로 정렬된 각 직원의 순위
  • DENSE_RANK: 결과 집합 내에서 각 행의 순위를 반환하며, 동일한 값에 대해 동일한 순위를 부여합니다.
  SELECT employee_id, salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank FROM employees;
  -- 결과: 급여 순으로 정렬된 각 직원의 순위 (동일한 값에 동일한 순위)
  • NTILE: 결과 집합을 지정된 수의 그룹으로 나눕니다.
  SELECT employee_id, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile FROM employees;
  -- 결과: 급여 순으로 정렬된 각 직원의 사분위수

이 예시들이 오라클의 다양한 내장 함수를 이해하고 활용하는 데 도움이 되길 바랍니다.

 

반응형