개발/Database

[MariaDB, MySQL] REGEXP_REPLACE 정규식 사용법

Dane.Kim 2022. 10. 30.

REGEXP_REPLACE는 MySQL 8.0 이상부터 사용 가능하다.

 

정규식을 사용하여 한글, 영문, 특수문자, 숫자를 제거하는 방법을 알아보자.

 

-- 한글제거
SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[가-힣]', '') AS nickname;

-- 숫자제거
SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[0-9]', '') AS nickname;

-- 영문제거
SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[a-z]', '') AS nickname;

-- 특수문자제거 (특정문자)
SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[`~!#$%^&*|\\\'\";:\/?]', '') AS nickname;

-- 특수문자제거 (전체)
SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[^[:alnum:][:space:]]+', '') AS nickname;
-- 중복해서 제거하려면 반복해서 작업하면 된다.

-- A에서 한글 제거해서 A에 저장
SELECT REGEXP_REPLACE(A, '[가-힣()]','') INTO A;

-- A에서 영문 제거해서 A에 저장
SELECT REGEXP_REPLACE(A, '[a-z]','') INTO A;

-- A에서 특수문자 제거해서 A에 저장
SELECT REGEXP_REPLACE(A, '[^[:alnum:][:space:]]','') INTO A;

정규식을 사용하여 쿼리를 작성해야 할 때,

 

위를 응용해서 사용해보면 될 것 같다.

 

그러나 너무 남용하면 조회 속도가 떨어질 수 있으니 주의해야 한다.

댓글