반응형
1. REGEXP
문자열이 특정 정규 표현식 패턴과 일치하는지 확인하는 연산자
column_name REGEXP 'pattern'
- column_name: 검색할 열
- pattern: 정규 표현식 패턴
-- 문자열에 'apple'이 포함된 경우 찾기
SELECT * FROM table_name WHERE column_name REGEXP 'apple';
-- 숫자로만 구성된 문자열 찾기
SELECT * FROM table_name WHERE column_name REGEXP '^[0-9]+$';
-- 특정 접두사로 시작하는 문자열
SELECT * FROM table_name WHERE column_name REGEXP '^prefix';
-- 특정 접미사로 끝나는 문자열
SELECT * FROM table_name WHERE column_name REGEXP 'suffix$';
-- 대소문자 구분 없이 문자열 찾기
SELECT * FROM table_name WHERE column_name REGEXP '(?i)pattern';
2. NOT REGEXP
문자열이 정규 표현식 패턴과 일치하지 않는 경우 확인
-- 'apple'이 포함되지 않은 경우
SELECT * FROM table_name WHERE column_name NOT REGEXP 'apple';
3. 정규 표현식의 주요 패턴
. | 임의의 한 문자 | a.c → abc, adc |
* | 0개 이상의 반복 | a* → a, aa, aaa |
+ | 1개 이상의 반복 | a+ → a, aa, aaa |
? | 0개 또는 1개 | a? → ``, a |
^ | 문자열의 시작 | ^a → apple |
$ | 문자열의 끝 | e$ → apple |
[abc] | a, b, c 중 하나 | [aeiou] → 모음 |
[a-z] | a부터 z 사이의 문자 | [a-d] → a, b, c, d |
[^abc] | a, b, c를 제외한 문자 | [^aeiou] → 자음 |
4. MySQL 정규 표현식 관련 함수
1) REGEPX_LIKE : REGEXP
연산자와 동일한 역할
SELECT * FROM table_name WHERE REGEXP_LIKE(column_name, 'pattern');
예) 특정 형식의 이메일 주소 찾기
SELECT * FROM users WHERE REGEXP_LIKE(email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$');
- ^[a-zA-Z0-9._%+-]+ : 영문대소문자, 숫자, 특수기호 ._%+- 를 포함하는 최소 한글자 이상의 문자열로 시작해야 함
- @ : @ 기호 반드시 포함
- [a-zA-Z0-9.-]+ : 영문대소문자, 숫자, 특수기호 ._ 포함하는 최소 한글자 이상의 문자열
- \\. : . 기호 반드시 포함, .은 정규식에서 특별한 의미를 가지므로 이스케이프 문자(\\)를 사용해 실제 마침표를 의미하도록 함
- [a-zA-Z]{2,}$') : 영문대소문자 최소 2글자 이상으로 끝나야 함
2) REGEXP_REPLACE : 정규식을 사용해 문자열의 특정 부분을 다른 문자열로 대체
REGEXP_REPLACE(string, 'pattern', 'replacement')
예) 문자열에서 공백을 대시(-
)로 대체
SELECT REGEXP_REPLACE('hello world', '\\s', '-') AS result;
-- 결과: 'hello-world'
3) REGEXP_INSTR : 정규식 패턴이 처음으로 나타나는 위치 반환
REGEXP_INSTR(string, 'pattern')
예) 'world' 단어가 시작하는 위치 찾기
SELECT REGEXP_INSTR('hello world', 'world') AS position;
-- 결과: 7
4) REGEXP_SUBSTR : 정규식에 일치하는 첫 번째 부분 문자열을 반환
REGEXP_SUBSTR(string, 'pattern')
예) 문자열에서 첫 번째 단어 추출
SELECT REGEXP_SUBSTR('hello world', '\\w+') AS first_word;
-- 결과: 'hello'
반응형