Conditional Expresstions

InHwa Hong·2022년 2월 20일
0

SQL

목록 보기
8/10

1. CASE⭐️

  • IF ~ THEN ~ ELSE 로직을 구현한 표현식
  • 여러 조건을 체크해 조건별 값을 반환하는 표현식
  • 1️⃣ 단순형2️⃣ 검색형이 있음
  • 반환하는 값의 데이터 유형이 모두 같아야 함 ★★★
    (THEN과 ELSE 다음은 값 뿐만 아니라 문자형, 표현식이 올 수 있음)
  • ELSE는 생략이 가능
  • 비교 데이터 기준 특정 WHEN절 조건이 참이면 이후 조건은 체크하지 않음

-1️⃣ 단순형

  • 단순형 표현식
SELECT 
	CASE expr WHEN 비교표현식1 THEN1 -- expr이 비교표현식1과 같으면 값1를 반환
              WHEN 비교표현식2 THEN2 -- expr이 비교표현식2와 같으면 값2를 반환ELSE 값n -- 어느 비교표현식과도 같지 않으면 값n을 반환 
	END (as) -- 컬럼명 지정
FROM employees 
  • Examples
SELECT country_id
	, country_name
    , CASE region_id WHEN 1 THEN '유럽'
    				WHEN 2 THEN '아메리카'
                    WHEN 3 THEN '아시아'
                    WHEN 4 THEN '중동 및 아프리카'
      END as region_name
FROM countries;

-2️⃣ 검색형

  • 단순형에 비해 다양한 조건 검색이 가능해 그 활용범위가 더 넓음
  • 검색형 표현식
SELECT 
  CASE WHEN 조건1 THEN1 -- 조건1을 만족하면 값1f를 반환
  	   WHEN 조건2 THEN2 -- 조건2를 만족하면 값2를 반환ELSE 값n -- 어느 조건도 만족하지 않으면 ELSE 다음의 값n을 반환

  END (AS) -- 컬럼명 지정
FROM table1
  • Example
SELECT employee_id, first_name, last_name, salary
	, CASE WHEN salary between 1 and 5000 THEN '낮음'
    	   WHEN salary between 5001 and 10000 THEN '중간'
           WHEN salary between 10001 and 15000 THEN '높음'
           ELSE '최상위'
      END as salary_rank
FROM employees;

2. IF

  • IF 함수는 실제로 다음 CASE 표현식과 동일한 언어 구조입니다.

1️⃣ if(condition, true_value)

  • 조건이 true이면 true_value를 반환하고 그렇지 않으면 null이 반환

2️⃣ if(condition, true_value, false_value)

  • 조건이 true이면 true_value를 반환하고, 그렇지 않으면 false_value를 반환

3. COALESCE⭐️

1️⃣ coalesce(컬럼,'변환값') : null 값 변경⭐️

  • 컬럼값이 null 이면 '변환값'으로 변환, null이 아니면 컬럼값 그대로 반환
  • oracle 에서는 NVL함수 사용하면 됨.

2️⃣ coalesce(expr1, expr2, expr3, ...)

  • expr1, expr2, expr3... 에서 첫번째로 null값이 아닌 값 반환
  • example
SELECT coalesce(null, null, 'b', null) -- 'b' 

4. NULLIF

1️⃣ nullif(value1, value2)

  • value1와 value2 값이 같으면 null을 반환하고, 그렇지 않으면 value1을 반환

5. TRY

1️⃣ try(expresstion)

  • 특정 오류 발생 시 NULL을 반환하여 오류를 처리함
  • 손상되거나 잘못된 데이터가 발견되었을 때 쿼리가 실패하는 대신 NULL 또는 기본값을 생성하는 것이 바람직한 경우 TRY 함수가 유용.
  • 기본값을 지정하기 위해 TRY 함수를 COALESCE 함수와 함께 사용할 수 있다.

Try로 처리 가능한 오류

  • 0으로 나누기
  • 잘못된 캐스트 인수 또는 잘못된 함수 인수
  • 숫자 값이 범위를 벗어남

0개의 댓글