SQL에서 정규식은 문자열을 패턴 매칭할 때 사용돼. 복잡한 문자열 데이터 처리에서 아주 유용하게 쓰이지. 특히 데이터 분석이나 ETL 작업을 할 때 많이 사용해.
1. 정규식(Regex)이란?
정규식(Regular Expression)은 특정한 패턴을 이용해 문자열을 검색하거나 치환하는 방법이야. SQL에서도 몇몇 함수나 명령어를 통해 정규식을 사용할 수 있어.
활용 예시
- 이메일 형식 확인
- 전화번호 패턴 찾기
- 특정 텍스트가 포함된 문자열 추출
2. SQL에서 정규식을 지원하는 함수
대표적으로 많이 사용하는 SQL의 정규식 함수는 아래와 같아:
1) REGEXP_LIKE
특정 문자열이 정규식 패턴과 일치하는지 확인할 때 사용해.
문법
REGEXP_LIKE(column_name, 'pattern')
예시
이름에 ‘김’이 포함된 데이터를 찾고 싶다면:
SELECT *
FROM users
WHERE REGEXP_LIKE(name, '김');
2) REGEXP_REPLACE
정규식 패턴과 일치하는 문자열을 다른 문자열로 바꿔줘.
문법
REGEXP_REPLACE(column_name, 'pattern', 'replacement')
예시
전화번호에서 하이픈(-
)을 제거하고 싶다면:
SELECT REGEXP_REPLACE(phone_number, '-', '') AS clean_number
FROM users;
3) REGEXP_SUBSTR
정규식 패턴에 맞는 첫 번째 문자열을 반환해.
문법
REGEXP_SUBSTR(column_name, 'pattern')
예시
문장 중 이메일 주소를 추출하고 싶다면:
SELECT REGEXP_SUBSTR(text, '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}') AS email
FROM messages;
4) REGEXP_INSTR
패턴이 문자열에서 시작하는 위치를 반환해.
문법
REGEXP_INSTR(column_name, 'pattern')
예시
특정 패턴의 시작 위치 찾기:
SELECT REGEXP_INSTR(name, '김') AS position
FROM users;
3. 정규식 패턴 기본 문법
정규식은 패턴으로 동작하니까, 기초적인 문법을 익혀두면 좋아.
패턴 | 설명 | 예시 |
---|---|---|
. | 임의의 한 문자 | a.b → a와 b 사이 문자 |
^ | 문자열의 시작 | ^A → A로 시작하는 문자열 |
$ | 문자열의 끝 | end$ → end로 끝나는 문자열 |
* | 0번 이상 반복 | ab* → a, ab, abb.. |
+ | 1번 이상 반복 | ab+ → ab, abb, abbb.. |
? | 0번 또는 1번 반복 | ab? → a, ab |
\d | 숫자(0-9) | \d{3} → 숫자 3자리 |
[abc] | a, b, c 중 하나와 일치 | [aeiou] → 모음 찾기 |
[^abc] | a, b, c를 제외한 문자와 일치 | [^0-9] → 숫자 제외 |
`(a | b)` | a 또는 b와 일치 |
4. 실전 예제
1) 이메일 형식 찾기
SELECT email
FROM users
WHERE REGEXP_LIKE(email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$');
2) 한국 전화번호 추출 (010-XXXX-XXXX 형식)
SELECT phone_number
FROM contacts
WHERE REGEXP_LIKE(phone_number, '^010-\d{4}-\d{4}$');
3) 특정 패턴을 다른 형식으로 변환하기
하이픈이 있는 주민등록번호를 가리기:
SELECT REGEXP_REPLACE(ssn, '\d{6}-\d{7}', '******-*******') AS masked_ssn
FROM users;
5. 정리
SQL 정규식을 잘 활용하면 데이터를 효율적으로 찾고 변환할 수 있어.
- 기본 함수:
REGEXP_LIKE
,REGEXP_REPLACE
,REGEXP_SUBSTR
- 기초 문법:
^
,$
,.
,\d
,*
,+
,?
작은 예제부터 천천히 연습하면 금방 익숙해질 수 있으니까, 필요할 때 꼭 써보세요
답글 남기기