MYSQL 정규표현식 사용하기 REGEXP

이수진·2024년 5월 1일

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

0개의 댓글