반응형
MYSQL 정규표현식으로 특수문자 조회하기
MYSQL에서 데이터를 조회하다 보면 주소, 주민등록번호 등 특수문자나 패턴을 가지고 있는 데이터를 조회해야 하는 경우가 있습니다. REGEXP는 정규표현식을 활용하여 특정 패턴이나 특수문자 숫자가 들어간 데이터를 조회할 때 유용하게 사용할 수 있습니다.
REGEXP 정규표현식
정규표현식 REGULAR EXPRESSION이란 특정 규칙을 가진 문자열의 집합을 표현하는 형식입니다. 즉, 패턴 처리를 할 때 사용하는 규칙이라고 볼 수 있습니다.
표현식 | 기능 | 예시 | 설명 |
. | 문자의 수 | '.....' | 문자열의 길이가 5글자 이상인 경우 |
| | OR 조건 | '사과|바나나' | '사과' 또는 '바나나를' 포함하는 문자열 |
[] | [] 안에 나열된 패턴과 일치하는 문자열 | '[가나다]a' | '가a' 또는 '나a' 또는 '다a'를 포함하는 문자열 |
^ | 시작하는 문자열 | '^사과' | '사과'로 시작하는 문자열 |
$ | 끝나는 문자열 | '과일$' | '과일'로 끝나는 문자열 |
* | 0회 이상 나타나는 문자열 | 'a*' | 'a'를 0번 이상 포함하는 문자열, 'a', 'aa', 'b' 모두 가능 |
+ | 1회 이상 나타나는 문자열 | 'a+' | 'a'를 1번 이상 포함하는 문자열, 'a', 'aa' 등 |
{m,n} | m회 이상 n회 이하 반복되는 문자 | '나{1,2}' | '나'가 1회 이상 2회 이하 포함하는 문자열, '나라', '바나나' 등 |
? | 0 ~ 1회 나타나는 문자 | '[사과]?' | '사' 또는 '과'를 0 ~ 1회 포함하는 문자열, '사랑', '과일' 등 |
[A-z] 또는 [:alpha:] 또는 \a | 알파벳 대소문자 | '[A-z]+' | 대소문자 알파벳을 1개 이상 포함하는 문자열 |
[0-9] 또는 [:digit:] 또는 \d | 숫자 | '[0-9]+' | 숫자를 1개 이상 포함하는 문자열 |
[^문자열] | 문자열을 포함하지 않음 | '[^꿀비]' | '꿀' 또는 '비'를 포함하지 않는 문자열, '꿀벌', '꿀비' 등을 포함하면 제외 |
REGEXP 사용 방법
REGEXP를 사용하여 데이터를 조회하는 예시입니다.
1) 한글을 포함하는 경우
SELECT *
FROM TEST
WHERE CONTENT REGEXP '[가-힣]';
2) 휴대폰 번호 패턴 확인
SELECT *
FROM TEST
WHERE CONTENT REGEXP '^010-([0-9]{4})-([0-9]{4})$';
3) 이메일 주소 패턴 확인
SELECT *
FROM TEST
WHERE CONTENT REGEXP '^[A-z]([-_.]?[0-9A-z])*@([-_.]?[0-9A-z])*[.]+([A-z]{2,3})$';
4) 비밀번호 패턴 확인
길이 8 이상 12 이하, 대문자 1개 이상 포함, 특수문자 1개 이상 포함 알파벳으로 구성
SELECT *
FROM TEST
WHERE CONTENT REGEXP '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$%!%*?&])[A-z0-9@#$%!%*?&]{8,12}$';
추가로 확인 필요한 패턴은 댓글로 문의 주시면 답변드리겠습니다.
반응형
댓글