Programming & Data Analysis/SQL
[MySQL] 다중 LIKE 문 사용하기 (REGEXP_LIKE)
시엔쩐
2022. 1. 5. 14:46
HackerRank에서 퀴즈를 풀다 다중 LIKE문에 대한 문제를 만났습니다.
SQL에서 LIKE를 여러개 조건으로 주고 싶을 때가 있습니다.
LIKE IN (조건 1, 조건2, 조건3....)은 안되나 싶어서 해보니 안되더라구요.
물론 여러 번을 다 써주어도 됩니다.
SELECT DISTINCT(CITY)
FROM STATION
WHERE
(CITY LIKE 'a%'
OR CITY LIKE 'e%'
OR CITY LIKE 'i%'
OR CITY LIKE 'o%'
OR CITY LIKE 'u%');
그렇지만 또 'CITY LIKE ~'가 반복되다보니 더 좋은 방법이 있을 것 같아 찾아보니
REGEX문으로 여러개의 LIKE를 적용할 수 있는 REGEXP_LIKE 가 있었습니다.
REGEXP_LIKE(String, '정규식 패턴', '매칭 파라미터')
정규식 패턴 조건값
- | : 여러 개 조건 나열할 경우
- ^ : 특정 문자로 시작한다는 조건 작성할 경우 (ex: '^ap' - ap로 시작하는 문자)
- $ : 특정 문자로 끝난다는 조건 작성할 경우 (ex: 'ful$' - ful로 끝나는 문자)
자주 쓰이는 매칭 파라미터
- 'i' : 대소문자 구별하지 않고 매칭
- 'c' : 대소문자 구별하여 매칭
- 'x' : 공백 문자를 무시하고 매칭
SELECT DISTINCT(CITY)
FROM STATION
WHERE REGEXP_LIKE(CITY,'^a|^e|^i|^o|^u', 'i');
Python에서도 그렇지만 암호같이 보이지만 정규표현식은 참 유용합니다.
방금 소개드린 REGEXP_LIKE외에도 여러 가지 함수가 있습니다.
REGEXP_REPLACE: 특정 조건에 맞는 문자열을 다른 문자열로 변경
REGEXP_INSTR: 특정 조건의 문자열이 시작되는 위치의 숫자값을 반환
SQL 복습을 꾸준히 할 수 있기를!!