728x90
CASE WHEN THEN
Oracle에서 특정 조건을 조합하고 조건 그룹 별로 다른 연산을 수행하고자 할 때 사용하는 문법입니다.
타 언어에서의 if, else와 유사한 기능을 수행하는 문법입니다.
사용 방법
SELECT
column1,
column2,
CASE
WHEN column1 = condition1 THEN value1 # 칼럼1 의 값이 condition1일 때 value 1로 치환
WHEN column2 = condition2 THEN value2 # 칼럼2 의 값이 condition2일 때 value 2로 치환
ELSE default_value # default_value로 표시한다.
END AS new_column # 이 칼럼명은 new_column 이다.
FROM
your_table;
CASE 로 조건부 질의를 시작하여
- WHEN 칼럼 = 값 1 THEN 값 2 : 칼럼의 값이 1일 때 값 2 로 치환한다.
- ELSE default_value : 조건에 해당하지 않는 값은 default_value로 치환한다.
- END AS new_column : 이 조건부 질의의 칼럼명은 new_column으로 정의한다.
의 맥락으로 사용한다.
사용 예시
문제 :
SEX_UPON_INTAKE 칼럼에 'Spayed' 혹은 'Neutered' 라는 값이 포함되어 있을 경우 O 값을, 아닐 경우 X 값을 표시하는 '중성화' 칼럼을 작성하시오.
결과값은 ID 순으로 정렬합니다.
[참고 테이블]
|| ANIMAL_ID || NAME || SEX_UPON_INTAKE ||
|-----------|--------|---------------------|
| 1 | Cat1 | Neutered Male |
| 2 | Dog1 | Spayed Female |
| 3 | Cat2 | Intact Male |
| 4 | Dog2 | Unknown |
| 5 | Cat3 | Spayed Female |
[작성 코드]
SELECT
ANIMAL_ID,
NAME,
CASE
WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
ELSE 'X'
END AS "중성화"
FROM
ANIMAL_INS
ORDER BY
1;
[쿼리 결과]
|| ANIMAL_ID || NAME || 중성화 ||
|-----------|--------|--------|
| 1 | Cat1 | O |
| 2 | Dog1 | O |
| 3 | Cat2 | X |
| 4 | Dog2 | X |
| 5 | Cat3 | O |
'DEV > Database' 카테고리의 다른 글
[Oracle][CentOS7] Oracle XE DB 21c 설치 및 설정 (1) | 2024.09.19 |
---|---|
[ORACLE] DECODE 함수 (0) | 2024.06.07 |
[Oracle] 조회 행을 제한하는 FETCH (0) | 2024.01.23 |
[ORACLE] 날짜 값을 정제하는 TO_CHAR (0) | 2024.01.22 |
[ORACLE] NULL값을 처리하는 NVL (0) | 2024.01.22 |