정규 표현식을 이용해 검색하는 함수로, 기본 연산자보다 복잡한 문자열 조건(=
Pattern)을 설정해 데이터를 검색할 수 있다.
LIKE OR IN 조건과 다르다!
LIKE는 보다 복잡하고 다양한 문자열 패턴을 검색하는 경우 쿼리가 지저분해진다는 단점을 가짐IN 은 모든 문자가 일치해야한다OPTION IN ('가나다') 를 지정 ➡️ 정확히 일치하는 '가나다'만 조회즉, 찾을 대상 문자열에서 정규표현식을 사용해서 해당 패턴과 일치하는 문자열을 검색하는 것
SELECT statements... WHERE fieldname REGEXP 'pattern';
SELECT * FROM movies WHERE title REGEXP 'code';
➡️code가 제목의 시작, 중간, 끝 어느 위치에 있든 포함되어있다면 조회
SELECT * FROM movies WHERE title REGEXP '^[abcd]';
| pattern | 기능 | 예시 | 설명 |
|---|---|---|---|
| . | 문자 하나 | "..." | 문자열 길이가 세 글자 이상 |
| |(수직선) | 또는(OR) | "데이터2|데이터2" | '데이터1' 또는 '데이터2'에 해당하는 문자열 |
| [] | 나열된 패턴에 해당하는 문자열 | "[123]d" | 1d or 2d or 3d |
| ^ | 시작하는 문자열 | "^안녕" | '안녕'으로 시작하는 문자열 |
| $ | 끝나는 문자열 | "습니다$" | '습니다'로 끝나는 문자열 |
| pattern | 기능 | 예시 | 설명 |
|---|---|---|---|
| * | 0회 이상 나타나는 문자 | "a*" | a가 0번 이상 등장하는 문자열 (b,a,aa) |
| + | 1회 이상 나타나는 문자 | "찌개+" | '찌개'가 1번 이상 등장하는 문자열 (된장찌개,부대찌개,김치찌개) |
| {m,n} | m회 이상 n회 이하 나타나는 문자 | "치{1,2}" | '치'가 1회 이상 2회 이하 등장하는 문자열 (치커리,치카치카) |
| ? | 0~1회 이상 나타나는 문자 | "[가나다]?" | 가 또는 나 또는 다가 0~1회 등장하는 문자열(가지마,나라,안녕) |
| pattern | 기능 | 예시 | 설명 |
|---|---|---|---|
| [A-z] 또는 [:alpha:] 또는\a | 알파벳 대문자 또는 소문자 문자열 | "[A-z]+" | 알파벳이 1개 이상인 문자열 |
| [0-9] 또는 [:digit:] 또는 \d | 숫자인 문자열 | "[0-9]+" | 1개 이상 숫자로 시작하는 문자열 |
| [^문자] | 괄호 안 문자를 포함하지 않은 문자역 | "[^부정]" | 부 또는 정을 포함하지 않은 문자열 |
참고사이트