나의 개발일지

[SQL] 일반 함수 본문

Oracle SQL

[SQL] 일반 함수

YoonJuHan 2023. 4. 14. 14:23

일반 함수

  1. 표현식에 NULL 값을 비롯한 모든 데이터 유형의 값을 사용할 수 있는 함수
  2. 사용 가능한 일반함수의 종류는 수 백 가지에 이를 만큼 방대
  3. 일반 함수 종류 예 : NVL, NVL2, NULLIF, COALESCE ... 등등

NVL 함수

  1. NULL 값을 실제 값으로 변환해주는 함수
  2. 구문
NVL(표현식1, 표현식2)
  1. 표현식1 : NULL을 포함하는 열 이름 또는 표현식
  2. 표현식2 : NULL 값을 변환할 대상 값
  3. 표현식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. 표현식1이 NULL이 아닌 경우 표현식2를 반환
  2. 첫 번째 표현식이  NULL인 경우, 표현식3을 반환
  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 함수

  1. 두 표현식을 비교한 결과
    1. 동일한 경우 NULL을 반환
    2. 동일하지 않은 경우 첫 번째 표현식을 반환
  2. 구문
NULLIF(표현식1, 표현식2)

 

  • 이름의 길이가 3이면 NULL을, 3이 아니면 이름의 길이를 반환
SELECT emp_id, emp_name, NULLIF(LENGTH(emp_name), 3) RESULT
FROM y_emp;

 

COALESCE 함수

  1. 표현식1이 NULLL이 아닌 경우 해당 표현식을 반환
  2. 표현식1이 NULL인 경우에는 나머지 표현식에 대해 COALESCE 함수를 계속 적용하요 인수의 목록에서 처음으로 NULL이 아닌 값을 반환
  3. COALESCE 함수는 인수의 개수에 제한이 없음
  4. 구문
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