[SQL] 정규표현식 활용하기

개미·2023년 2월 28일
0

📌 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

profile
개발자

0개의 댓글