[MySql] 정규식 사용 방법
https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)
- SQL Regex(Regular expression )
https://dev.mysql.com/doc/refman/8.0/en/regexp.html
- 예)
SELECT 'test123' REGEXP '^[\\"\\,a-zA-Z\\[\\] ]+$';
SELECT REGEXP_LIKE( 'test123' , '^[\\"\\,a-z\\[\\] ]+$' , 'i');
- 이스케이핑을 위한 백슬래쉬 문자(\)는 2번 쓴다
- REGEXP , RLIKE , REGEXP_LIKE 는 모두 같은 기능
- NOT REGEXP : REGEXP에 NOT 적용
- REGEXP_LIKE 3번째 인자에 옵션을 줄수있다.
- c: 대소문자 구분
- i: 대소문자 구분 안함
- m: 멀티 라인 모드
//-----------------------------------------------------------------------------
* 유니코드 숫자 이용 검색 방법(mysql regex search where unicode character number)
- 예) 빈칸이 3개 이상, "<p> </p>"
REGEXP_LIKE( str, '<p>[\\u3000]{3,}</p>')
* 한글 포함 판단
REGEXP_LIKE( 'a가a', '[\\uAC00-\\uD7AF]'), // 완성된 글자만 검사
REGEXP_LIKE( 'ㅋ', '[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]'), // 독립 자음, 모음 포함 검사
전각문자(일본어)
content REGEXP '[\\uFF01-\\uFF5E]' # 전각문자 전체
content REGEXP '[\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A]' # 전각문자중 0-9a-zA-Z
https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)
https://www.utf8-chartable.de/unicode-utf8-table.pl?start=65280&utf8=char
//--------------------------------------------
< 함수 >
* REGEXP_INSTR(소스 문자열, 정규식 패턴, 검색 시작 위치, 발견된 수치)
- 찾은 위치 리턴
SELECT REGEXP_INSTR('aa aaa aaaa', 'a{4}');
=> 8
//-------------------
* REGEXP_REPLACE(소스 문자열, 정규식 패턴, 교체할 문자열, 검색 시작 위치, 발견된 수치)
- 문자열 교체
SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3);
=> abc def X
//-------------------
* REGEXP_SUBSTR(소스 문자열, 정규식 패턴, 검색 시작 위치, 발견된 수치 )
- 문자열 추출
SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3);
=> ghi