Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[SQL] 일반 함수 본문
일반 함수
- 표현식에 NULL 값을 비롯한 모든 데이터 유형의 값을 사용할 수 있는 함수
- 사용 가능한 일반함수의 종류는 수 백 가지에 이를 만큼 방대
- 일반 함수 종류 예 : NVL, NVL2, NULLIF, COALESCE ... 등등
NVL 함수
- NULL 값을 실제 값으로 변환해주는 함수
- 구문
NVL(표현식1, 표현식2)
- 표현식1 : NULL을 포함하는 열 이름 또는 표현식
- 표현식2 : NULL 값을 변환할 대상 값
- 표현식2의 데이터 유형은 표현식1의 데이터 유형과 동일
- NVL 함수를 활용하여 COMM이 NULL인 사원에 대하여 ANNSAL의 결과가 나오도록 하면서 사원의 연간 총 급여를 표시
- NVL 함수를 이용해 NULL값을 실제 값으로 만들어주지 않고 계산하면 값과 NULL을 연산하게 되어 결과가 NULL이 나옴
SELECT emp_name, salary, comm,
(salary*12) + (salary*12*NVL(comm, 0)) ANNSAL
FROM y_emp;
- 부서가 정해지지 않은 사원의 dept_id열에 'Not Yet'이라는 텍스트를 반환
- dept_id 열은 숫자 데이터고 'Not Yet' 텍스트는 문자 데이터 이므로 형변환 필요
SELECT emp_name, dept_id, NVL(TO_CHAR(dept_id), 'Not Yet') 부서
FROM y_emp
WHERE dept_id IS NULL;
NVL2 함수
- 표현식1이 NULL이 아닌 경우 표현식2를 반환
- 첫 번째 표현식이 NULL인 경우, 표현식3을 반환
- 구문
NVL2(표현식1, 표현식2, 표현식3)
- 연간 총 급여를 반환하는 예제로, BIGO 열에 COMM값이 있으면 'SAL+COMM'을, COMM 값이 없으면 'SAL'을 반환하도록 하여 COMMISSION을 받는 사원과 그렇지 않은 사원을 구분
SELECT emp_name, (salary*12)+(salary*12*NVL(comm, 0)) ANN_SAL,
NVL2(comm, 'SAL+COMM', 'SAL') BIGO
FROM y_emp;
NULLIF 함수
- 두 표현식을 비교한 결과
- 동일한 경우 NULL을 반환
- 동일하지 않은 경우 첫 번째 표현식을 반환
- 구문
NULLIF(표현식1, 표현식2)
- 이름의 길이가 3이면 NULL을, 3이 아니면 이름의 길이를 반환
SELECT emp_id, emp_name, NULLIF(LENGTH(emp_name), 3) RESULT
FROM y_emp;
COALESCE 함수
- 표현식1이 NULLL이 아닌 경우 해당 표현식을 반환
- 표현식1이 NULL인 경우에는 나머지 표현식에 대해 COALESCE 함수를 계속 적용하요 인수의 목록에서 처음으로 NULL이 아닌 값을 반환
- COALESCE 함수는 인수의 개수에 제한이 없음
- 구문
COALESCE(표현식1, 표현식2, ... 표현식n)
- COMMISSION이 NULL이 아닌 사원은 COMMISSION을, NULL이면 SALARY를, 둘 다 NULL이면 0을 반환
SELECT emp_id, emp_name, COALESCE(comm, salary, 0)
FROM y_emp;
'Oracle SQL' 카테고리의 다른 글
[SQL] 그룹 함수 (0) | 2023.04.16 |
---|---|
[SQL] 조건 표현식 (0) | 2023.04.14 |
[SQL] 함수의 중첩 (0) | 2023.04.14 |
[SQL] 데이터 유형 변환 함수 (단일 행 함수 4) (1) | 2023.04.09 |
[SQL] 날짜 함수 (단일 행 함수 3) (0) | 2023.04.09 |
Comments