[mysql/oracle] 중성화 여부 파악하기

2023. 1. 29. 02:39Programmers/SQL

문제

 

결과

 

mysql / oracle

case문
1
2
3
4
5
6
7
8
9
SELECT animal_id
       , name
       , (case
         when sex_upon_intake like '%Spayed%' 
              or sex_upon_intake like '%Neutered%' then 'O'
         else 'X' 
         end) 중성화  
from animal_ins
order by animal_id
cs

like 덕분에 와일드카드를 이용할 수 있다.

 

mysql 

if문
1
2
3
4
5
6
SELECT animal_id
       , name
       , if ( sex_upon_intake like '%Spayed%' 
              or sex_upon_intake like '%Neutered%' , 'O''X'  ) 중성화  
from animal_ins
order by animal_id
cs
if(조건문, true일 때 값, false일 때 값)

 

oracle

decode
1
2
3
4
5
SELECT animal_id
       , name
       , decode(regexp_substr(sex_upon_intake, '[^ ]+',1,1), 'Spayed','O','Neutered','O''X' ) 중성화  
from animal_ins
order by animal_id
cs

decode에서는 like를 사용할 수 없어 정규식을 사용하였다.

regexp_substr(문자열 or 컬럼명, 문자패턴조건, 시작 위치, 시작에서부터 몇 개나 자를지 개수)