📌 SQL 정규표현식 활용하기
1. 정규표현식의 패턴 정리
패턴 | 기능 |
---|
[a-z] | 알파벳 소문자를 포함한 문자열을 찾아줌 |
[A-z] | 알파벳 대분자 또는 소문자를 포함한 문자열을 찾아줌 |
[d-g] | 알파벳 소문자 d ~ g 를 포함한 문자열을 찾아줌 |
[aeiou] | a, e, i, o, u 를 포함한 문자열을 찾아줌 |
패턴 | 기능 | 예시 | 설명 |
---|
* | 0회 이상 패턴 반복된 문자열을 찾아줌 | [0-4]* | 0 ~ 4에 해당하는 숫자가 0회 이상 반복되는 문자열을 추출 |
+ | 1회 이상 패턴 반복된 문자열을 찾아줌 | [가-힣]+ | 한글이 1회 이상 반복되는 문자열을 추출 |
{n,m} | n회 이상, m회 이하로 패턴이 반복된 문자열을 찾아줌 | [abc]{3,5} | a 또는 b 또는 c 가 3번 이상, 5번 이하 반복되는 문자열을 추출 "aacd", "accd", "abc" 추출 / "adf", "ab" 추출X |
? | 0회 또는 1회 패턴 반복된 문자열을 찾아줌 | [안녕]? | '안' 또는 '녕' 문자가 0~1회 반복되는 경우 추출"안대", "기쁨", "선물" 추출 / "안녕", "안과안경" 추출 X |
패턴 | 기능 |
---|
^ | 맨 앞 위치로 제한하기 |
$ | 맨 마지막 위치로 제한하기 |
. | 자리 하나를 차지하기 |
2. SQL에서 정규 표현식 사용하기
컬럼 (not) regexp "정규표현식"
✅ 예시
where city regexp "^[aeiou].*[aeiou]$"
정규표현식 | 해석 |
---|
^[aeiou] | a,e,i,o,u 가 문자열의 제일 앞에 있으면서 |
.* | 중간에 어떤 문제가 0개 이상 존재하고 |
[aeiou]$ | 문자열 가장 마지막에 a,e,i,o,u 가 존재하는 문자열 추출 |
REGEXP_LIKE(컬럼, '정규표현식')
✅ 예시
WHERE REGEXP_LIKE(컬럼, '[0-9]')
WHERE REGEXP_LIKE(컬럼, '[^0-9]')
WHERE NOT REGEXP_LIKE(컬럼, '[0-9]')
WHERE NOT REGEXP_LIKE(컬럼, '[^0-9]')
https://schatz37.tistory.com/39
https://developbts.tistory.com/3