강의로 돌아가기
Eunbi Lee

regexp는 못쓰나요?

주석처리된 REGEXP 썼을 때랑 like(또는 =) 여러개 쓴 거랑 똑같은 결과가 나오는데,
REGEXP는 채점 결과 틀렸다고 하고 like 쓰니까 통과되네요...
무슨 차이인지 궁금해서 질문합니다.

작성중인 코드―solution.sql
1
2
3
4
5
6
-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
--  WHERE NAME REGEXP 'Lucy|Ella|Pickle|Rogan|Sabrina|Mitty'
WHERE NAME like 'Lucy' OR NAME like 'Ella' OR NAME like 'Pickle' OR NAME like 'Rogan' OR NAME like 'Sabrina' OR NAME like 'Mitty'
ORDER BY ANIMAL_ID
1 개의 답변
Jamie

REGEXP을 사용할 수 있지만 정규식이 LIKE 에 비해 보다 detail한 사용성을 가져다 주기 때문에 좀 더 섬세하게 다룰 필요가 있습니다.

LIKE를 이용한 문자 매칭의 경우 위의 방식 보다는 좀 더 가독성 있게,

WHERE A.NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')

형태로 사용하시길 권장해 드립니다.

REGEXP를 사용하는 경우

WHERE A.NAME REGEXP '^(Lucy|Ella|Pickle|Rogan|Sabrina|Mitty)$'

와 같이 정규식의 문자열이 단순 매칭을 OR로 연결하는 것에서 추가로 시작과 끝을 ^과 $ 로 제한을 두셔야 합니다.
예를 들면 ^과 $을 정규식에 포함하지 않았을 경우
xxxLucyxx, Lucyxxxx, xxxxLucy
등의 이름도 정규식이 match TRUE 결과를 반환할 것이기 때문입니다.
시작 끝 조건을 포함한 정규식을 작성하신다면 REGEXP 로 SQL 문법을 작성하셔도 프로그래머스에서 통과될 거에요 :-)

도움이 되셨길!

  • 김민철

    많은 도움 되었습니다. 감사합니다!

    김민철―2020.10.30 14:14
  • LEE

    자세한 설명 감사드립니다!

    LEE―2021.01.15 15:34
  • 주현

    친절한 설명 감사해요!!!

    주현―2021.12.09 17:43
  • 박박박

    박박박―2023.08.25 13:47
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.