[SQL] MySQL REGEXP(Regular Expression) 정규표현식

juyeon lee·2024년 1월 27일

SQL TEST

목록 보기
8/8

📖REGEXP(Regular Expression)


정규 표현식을 이용해 검색하는 함수로, 기본 연산자보다 복잡한 문자열 조건(=Pattern)을 설정해 데이터를 검색할 수 있다.

LIKE OR IN 조건과 다르다!

  • LIKE는 보다 복잡하고 다양한 문자열 패턴을 검색하는 경우 쿼리가 지저분해진다는 단점을 가짐
  • IN 은 모든 문자가 일치해야한다
    예시 : OPTION 컬럼에 '가나다라마바사', '가나다', '가나다라' 가 포함되어있을 때,
    OPTION IN ('가나다') 를 지정 ➡️ 정확히 일치하는 '가나다'만 조회

즉, 찾을 대상 문자열에서 정규표현식을 사용해서 해당 패턴과 일치하는 문자열을 검색하는 것

기본 구문

SELECT statements... WHERE fieldname REGEXP 'pattern';

구문 예시

  1. code가 포함된 title인 데이터를 movies 테이블에서 조회
SELECT * FROM movies WHERE title REGEXP 'code';

➡️code가 제목의 시작, 중간, 끝 어느 위치에 있든 포함되어있다면 조회

  1. a, b, c 또는 d로 시작하고 그 뒤에 다른 문자가 많이 오는 영화를 조회
SELECT * FROM movies WHERE title REGEXP '^[abcd]';

Pattern 종류

Matching

pattern기능예시설명
.문자 하나"..."문자열 길이가 세 글자 이상
|(수직선)또는(OR)"데이터2|데이터2"'데이터1' 또는 '데이터2'에 해당하는 문자열
[]나열된 패턴에 해당하는 문자열"[123]d"1d or 2d or 3d
^시작하는 문자열"^안녕"'안녕'으로 시작하는 문자열
$끝나는 문자열"습니다$"'습니다'로 끝나는 문자열

Times

pattern기능예시설명
*0회 이상 나타나는 문자"a*"a가 0번 이상 등장하는 문자열 (b,a,aa)
+1회 이상 나타나는 문자"찌개+"'찌개'가 1번 이상 등장하는 문자열 (된장찌개,부대찌개,김치찌개)
{m,n}m회 이상 n회 이하 나타나는 문자"치{1,2}"'치'가 1회 이상 2회 이하 등장하는 문자열 (치커리,치카치카)
?0~1회 이상 나타나는 문자"[가나다]?"가 또는 나 또는 다가 0~1회 등장하는 문자열(가지마,나라,안녕)

Group

pattern기능예시설명
[A-z] 또는 [:alpha:] 또는\a알파벳 대문자 또는 소문자 문자열"[A-z]+"알파벳이 1개 이상인 문자열
[0-9] 또는 [:digit:] 또는 \d숫자인 문자열"[0-9]+"1개 이상 숫자로 시작하는 문자열
[^문자]괄호 안 문자를 포함하지 않은 문자역"[^부정]"부 또는 정을 포함하지 않은 문자열

참고사이트

[MySQL] REGEXP(Regular Expression(정규 표현식))

구문 및 예제가 포함된 MYSQL 정규 표현식(REGEXP)

0개의 댓글