[SQL] 정규식을 이용한 다중조건 설정

전도운·2024년 7월 1일
0
post-custom-banner

특정 칼럼에서 여러 문자 중 하나라도 포함하고 있는 데이터를 추출하려고 한다. 해당 조건을 한 줄의 쿼리로 작성하려면 어떻게 해야할까?

  • 보통 이와 같은 경우 떠올리는 구문은 LIKE '%text%' 구문이다. 이 구문 사용 시 %% 안에 있는 text를 포함하면 해당 행을 추출한다. 그러나 LIKE 구문은 조건을 하나밖에 걸 수 없다는 단점이 있다.

  • 이때 정규식을 이용하면 LIKE 구문을 여러 줄 작성하지 않고도 한 줄의 쿼리로 동일한 결과를 얻을 수 있다.

예시 쿼리를 살펴보자.

아래 쿼리는 ANIMAL_INS라는 테이블에서 SEX_UPON_INTAKE 변수에 'Neutered' 또는 'Spayed'라는 단어가 들어가는 데이터를 O으로 치환하여 '중성화여부'라는 변수를 만드는 코드이다.

SELECT ANIMAL_ID, NAME,
        CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' THEN 'O'
             WHEN SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
        ELSE 'X' END AS 중성화여부
    FROM ANIMAL_INS;

여기서 LIKE 구문은 다중 조건 설정이 불가하므로 조건을 두 번 작성하게 된다.
이때, 다음과 같은 정규식 쿼리를 사용하면 코드 중복을 피할 수 있다.

SELECT ANIMAL_ID, NAME,
    CASE WHEN (SEX_UPON_INTAKE REGEXP ('Neutered|Spayed')) THEN 'O'
    ELSE 'X' END AS 중성화
FROM ANIMAL_INS;
profile
의미 있는 한걸음을 추구합니다.
post-custom-banner

0개의 댓글