반응형
코딩테스트 문제를 풀다가 여러 조건 문자열 중 하나라도 포함된 튜플을 출력하라는 문제가 있었다.
( https://school.programmers.co.kr/learn/courses/30/lessons/151137 )
단순히 LIKE와 OR연산으로 풀어나가도 문제는 없지만,
좀 더 편리한 방법이 없을까 하다가 찾은 함수가 REGEXP 이다.
MySQL에서 정규표현식으로 검색하기
REGEXP로 여러 조건 문자열 중 하나라도 포함된 데이터 출력하기 ( | )
SELECT * FROM Customers
WHERE Address REGEXP('Obere|Avda');
REGEXP 앞에 명시한 Address 컬럼에서 'Obere' 혹은 'Avda' 문자열을 포함한 데이터들이 출력된 것을 확인할 수 있다.
문자열과 문자열 사이에 '|' 연산을 통해 조건을 추가할 수도 있다.
A로 시작하는 데이터 출력하기 ( ^ )
SELECT * FROM Customers
WHERE Address REGEXP('^A');
'^' 을 통해 시작하는 문자열을 찾을 수 있다.
A로 끝나는 데이터 출력하기 ( $ )
SELECT * FROM Customers
WHERE Address REGEXP('A$');
'$' 을 통해 끝나는 문자열을 찾을 수 있다.
패턴으로 데이터 검색하기 ( . )
SELECT * FROM Customers
WHERE City REGEXP("^B....n+$");
조건에서의 '.' 은 모든 문자열을 나타낸다.
"^B....n+$" 는 B로 시작하고 n으로 끝나되 그 사이에 점의 개수만큼 문자열을 갖는 패턴을 검색한다.
정리
정규표현식은 오라클에도 있는 내용으로 다양한 함수들이 있다.
MySQL 역시 이외에도 다른 종류들도 있으며, 이들을 혼합하여 적절하게 사용하게되면 더욱 좋을 것 같다.
반응형
'SQL' 카테고리의 다른 글
[Oracle/MySQL] ROWNUM과 LIMIT, 행 수 제한하기 (3) | 2023.06.09 |
---|---|
[Oracle/MySQL] CONCAT, 문자열 합치기 (0) | 2023.06.08 |
[Oracle/MySQL] 날짜 연산, 이전 달 출력하기 (0) | 2023.05.31 |
[Oracle/MySQL] NVL과 IFNULL, COALESCE로 널 값 처리하기 (0) | 2023.05.24 |
[Oracle/MySQL] DATE_FORMAT과 TO_CHAR, 날짜 출력하기 (0) | 2023.05.21 |