# -- 코드를 입력하세요
# SELECT I.ANIMAL_ID, I.NAME,I.SEX_UPON_INTAKE
# FROM ANIMAL_INS I
# WHERE I.NAME IN ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')
# ORDER BY ANIMAL_ID ASC;
SELECT I.ANIMAL_ID, I.NAME,I.SEX_UPON_INTAKE
FROM ANIMAL_INS I
WHERE I.NAME REGEXP '^(Lucy|Ella|Pickle|Rogan|Sabrina|Mitty)$'
ORDER BY I.ANIMAL_ID ASC;
해당 글은 Programmers 코딩테스트 연습을 토대로 MYSQL 로 작성되었습니다.
Q 문제: Lucy ~ Mitty 해당 동물의 이름이 포함되어 있는 동물 친구들을 찾아라.
A 정답코드:
# -- 코드를 입력하세요
# SELECT I.ANIMAL_ID, I.NAME,I.SEX_UPON_INTAKE
# FROM ANIMAL_INS I
# WHERE I.NAME IN ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')
# ORDER BY ANIMAL_ID ASC;
SELECT I.ANIMAL_ID, I.NAME,I.SEX_UPON_INTAKE
FROM ANIMAL_INS I
WHERE I.NAME REGEXP '^(Lucy|Ella|Pickle|Rogan|Sabrina|Mitty)$'
ORDER BY I.ANIMAL_ID ASC;
REGEXP 정규표현식
Regular Expression의 약자로 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.
# -- 코드를 입력하세요
# 컬럼명 중 Lucy ~ Mitty 가 포함된 모든 이름을 조회
WHERE I.NAME REGEXP 'Lucy|Ella|Pickle|Rogan|Sabrina|Mitty'
# 컬럼명 중 Lucy ~ Mitty 일치하는 이름을 조회
WHERE I.NAME REGEXP '^(Lucy|Ella|Pickle|Rogan|Sabrina|Mitty)$'
1:1 매칭이 되려면 시작에는 ^ 끝에는 $를 붙여줘야한다.
그렇지않고 위처럼 쿼리문을 작성한다면 LLLucy, Ellaaaa 와 같은 이름이 존재한다면 모두 출력이 될것이다.