숫자 함수
- 숫자 함수는 주로 숫자 계산과 추가 처리에 사용
- 숫자 함수 종류
함수 | 설명 | 예 | 결과 |
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(): 공통 순위 없이 순위를 출력하는 순위 함수
'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 |