https://school.programmers.co.kr/learn/courses/30/lessons/59409
위 문제를 풀기 위해서는 특정 컬럼에 특정 문자열들이 포함된 데이터를 찾아야했다.
like연산자를 이용해 어떤 문자열의 포함 여부를 판단할 수 있다.
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 ANIMAL_ID
위처럼 작성해도 결과가 제대로 나오지만 만약 문자열 조건이 더 늘어나게 된다면 반복적으로 작성하는 부분이 너무 많게 된다. 이를 더 간단히 표현할 수 있는 방법을 찾다가 정규표현식을 이용하는 방법을 알게 되었다.
REGEXP를 사용하면 정규표현식으로 문자열 조건을 설정할 수 있다.
따라서 위의 sql문을 아래와 같이 바꿀 수 있다.
SELECT
ANIMAL_ID,
NAME,
CASE
WHEN SEX_UPON_INTAKE REGEXP '^Neutered|^Spayed' THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID