SQL - 정규표현식

김태준·2023년 3월 4일
0

DB STUDY

목록 보기
12/17

SQL 스터디를 진행하며 JOIN, GROUP BY, UNION, STRING DATE 등등 풀어왔지만, SQL에서는 문자, 숫자로 구성된 컬럼을 어떻게 분할하고 처리하는 지 궁금해 살펴보니 정규표현식이란 것을 발견하게 되었다.

✅ 정규표현식(Regular Expression)

함수로는 REGEXP로 표현하며 LIKE를 이용한 검색과 달리 SQL에서 기본 연산자보다 복잡한 문자열 조건을 걸어 데이터를 검색할 수 있다.
하지만, 정규표현식 검색을 이용할 때 절대 사용자에게 정규식 기능을 제공해선 안된다.
각종 오류를 포함해 SQL Injection에 취약해지기에 검색을 이용할 경우, 개발자가 미리 정한 테두리 내에서 행해져야만 한다.

✍️ REGEXP란?

  • 특정 규칙을 가진 문자열 집합을 표현하는데 사용하는 형식 언어
  • 문자열을 처리하는 방법 중 하나로 특정 조건의 문자를 검색, 치환하는 과정을 간편하게 함
  • SQL부터 스크립트 언어까지 다양한 곳에서 활용 가능
  • Pattern을 사용해 문자열 처리

💯 Pattern 종류

1) Matching1

2) Numbers Limit

3) String Group

4) Not

💯 예제

# 길이 7글자인 문자열 중 2번째 자리부터 abc를 포함하는 문자열을 찾고 싶을 때

# 정규표현식을 사용하지 않을 때
SELECT *
FROM table
WHERE CHAR_LENGTH(data) = 7 AND SUBSTRING(data, 2, 3) = 'abc';

# 정규표현식을 사용할 때
SELECT *
FROM table
WHERE data REGEXP ('^.abc...$');

# 텍스트와 숫자가 섞여 있는 문자열에서 숫자로만 이루어진 문자열을 찾고 싶을 때

# 정규표현식을 사용하지 않을 때
SELECT *
FROM tbl
WHERE data LIKE ??????????

# 정규표현식을 사용할 때
SELECT *
FROM tbl
WHERE data REGEXP ('^[0-9]+$'); 
-- OR data REGEXP ('^\d$') 
-- OR data REGEXP ('^[:digit:]$');
profile
To be a DataScientist

0개의 댓글