[TIL] 내일배움캠프 97일차_[MySQL] 정규표현식(RegExp)
👀Today I Learn
1. MySQL에서 정규표현식 사용 방법
- MySQL에서 정규표현식을 사용할 때는
REGEXP
연산자를 사용 - MySQL 8.0부터는
RLIKE
연산자도 동일한 기능을 수행
기본 구문
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 REGEXP '정규표현식'
또는
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 RLIKE '정규표현식'
예제 데이터
-
아래와 같은
users
테이블이 있다고 가정id name email 1 Alice alice@mail.com 2 Bob bob@mail.net 3 Charlie charlie@gmail.com 4 David david@company.org 5 Eve eve123@yahoo.com
2. 정규표현식 예제
특정 패턴이 포함된 데이터 찾기
-
예제: 이메일 주소에
gmail
이 포함된 사용자 찾기SELECT * FROM users WHERE email REGEXP 'gmail'
-
결과:
id name email 3 Charlie charlie@gmail.com
특정 문자로 시작하는 데이터 찾기
-
예제:
name
이 ‘A’로 시작하는 사용자 찾기SELECT * FROM users WHERE name REGEXP '^A'
-
결과:
id name email 1 Alice alice@mail.com
특정 문자로 끝나는 데이터 찾기
-
예제:
.org
로 끝나는 이메일 찾기SELECT * FROM users WHERE email REGEXP '\.org$'
-
결과:
id name email 4 David david@company.org
숫자가 포함된 데이터 찾기
-
예제:
name
에 숫자가 포함된 사용자 찾기SELECT * FROM users WHERE name REGEXP '[0-9]'
-
결과:
id name email 5 Eve123 eve123@yahoo.com
여러 개의 단어 중 하나와 일치하는 데이터 찾기
-
예제:
email
이mail.com
또는gmail.com
을 포함하는 사용자 찾기SELECT * FROM users WHERE email REGEXP 'mail\.com|gmail\.com'
-
결과:
id name email 1 Alice alice@mail.com 3 Charlie charlie@gmail.com
3. MySQL 정규표현식 패턴 정리
패턴 | 설명 |
---|---|
^ |
문자열의 시작 |
$ |
문자열의 끝 |
. |
임의의 한 문자 |
* |
앞 문자가 0개 이상 반복 |
+ |
앞 문자가 1개 이상 반복 |
? |
앞 문자가 0개 또는 1개 존재 |
[abc] |
a, b, c 중 하나와 일치 |
[^abc] |
a, b, c 제외한 문자와 일치 |
[0-9] |
숫자 0~9 중 하나와 일치 |
a|b |
a 또는 b와 일치 |
\. |
마침표 (. ) 자체를 검색할 때 사용 |
4. 주의할 점
- 대소문자 구분
- MySQL에서
REGEXP
는 기본적으로 대소문자를 구분 - 만약 대소문자를 구분하지 않고 검색하려면
BINARY
키워드를 사용해야 함
SELECT * FROM users WHERE BINARY name REGEXP 'alice'
- 이 경우, ‘Alice’가 검색되지 않음
- MySQL에서
- 백슬래시(
\
) 이스케이프- MySQL에서는 백슬래시(
\
)를 사용하여 특수 문자를 이스케이프해야 함 - 예:
.
을 문자 그대로 찾고 싶다면\.
,?
을 문자 그대로 찾고 싶다면\?
를 사용해야 함
- MySQL에서는 백슬래시(
- 성능 고려
REGEXP
는LIKE
보다 느릴 수 있으므로, 대량의 데이터에서 사용 시 성능을 고려해야 함
5. 결론
- MySQL에서 정규표현식을 사용하면 일반적인
LIKE
연산자로 처리하기 어려운 복잡한 패턴 매칭을 수행할 수 있음 REGEXP
를 활용하면 특정 문자 포함 여부, 시작/끝 문자 매칭, 숫자 포함 여부 등 다양한 조건을 적용하여 데이터를 검색할 수 있음- 하지만 성능 문제를 고려해야 하며, 대소문자 구분 여부나 백슬래시 이스케이프에 유의해야 함
- 적절한 경우에 정규표현식을 활용하면 MySQL에서 더 강력한 데이터 검색을 수행할 수 있음
- 참고 자료
- MySQL 공식 문서: Regular Expressions
💡Today I Thought
오늘의 체크리스트
- 알고리즘 코드카타 1문제
- SQL 코드카타 3문제
- ERD, API 명세서 수정
- 기술적 의사결정(DB/배포)
- Github 연습
- ML 고민해보기
- TIL 작성
회고
오늘도 팀원들과 SA문서 수정을 했다. 내일은 SA문서 초안 완성하고 저녁에는 환경 설정을 해서 수요일부터는 MVP 개발을 할 수 있도록 준비해야겠다. 부족한 팀장 잘 따라와주는 팀원들에게 무한 감사..🫠
댓글남기기