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;
정규식을 사용하여 쿼리를 작성해야 할 때,
위를 응용해서 사용해보면 될 것 같다.
그러나 너무 남용하면 조회 속도가 떨어질 수 있으니 주의해야 한다.
'개발 > Database' 카테고리의 다른 글
[MySQL] Prepared statement needs to be re-prepared 에러 해결방법 (0) | 2022.11.07 |
---|---|
[MySQL] 파일 경로에서 substring_index 로 파일명, 확장자명 분리해 조회하기 (0) | 2022.09.26 |
[SQL] Oracle SQL Developer에서 MySQL 연동 (0) | 2021.12.10 |
Oracle port 변경 (0) | 2021.12.03 |
[SQL] DML, DDL, DCL, TCL 재정리 (0) | 2021.12.01 |
댓글