- 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( 'ㅋ',  '[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]'), // 독립 자음, 모음 포함 검사

 

 

 

//--------------------------------------------

< 함수 > 

 

* 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  




반응형
Posted by codens