MySQL 시리즈의 정규 함수 regexp

1. 개요

MySQL5 시리즈의 가장 높은 버전 번호는 5.7이며 MySQL 6 및 7 시리즈는 없습니다.

MySQL 8.0+에는 4개의 기능만 도입되었으며 regexp_replace,regexp_like,regexp_instr,regexp_substr, 이 4개의 기능이 이 버전 이전의 MySQL 클라이언트에서 실행되면 오류가 보고됩니다.FUNCTION regexp_xxx does not exist

2. 레귤러

2.1 좋아요/싫어요

like는 원래 퍼지 일치이며 여기에 확장이 있습니다. like(not like)는 패턴 매칭을 위한 MySQL의 연산자로, 컬럼을 주어진 값과 비교하여 동일한(다른) 컬럼을 패턴으로 반환합니다. 이 기능은 일반보다 훨씬 덜 강력합니다.

2.2 정규식/비정규식

MySQL 정규식 일치에 사용되는 문자는 정규식과 동일합니다.

모델 패턴이 일치하는 것은 무엇입니까
^ 문자열의 시작과 일치
$ 문자열의 끝과 일치
. 단일 문자와 일치
[...] 대괄호 사이에 나열된 모든 문자와 일치
[^...] 대괄호 사이에 나열되지 않은 모든 문자와 일치
p1|p2|p3 교대로 p1, p2 또는 p3과 일치
* 이전 요소의 0개 이상의 발생과 일치
+ 이전 요소의 하나 이상의 발생과 일치
{n} 앞의 요소와 n번 일치
{m,n} 선행 요소 m ~ n번 일치

예: 모음으로 시작하고 ok로 끝나는 모든 이름을 쿼리합니다.SELECT name FROM person WHERE name REGEXP '^[aeiou].*ok$';

2.3 regexp_replace

regexp_replace()함수는 일치하는 문자로 주어진 문자열을 대체하는 데 사용됩니다.
문법:REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_type]]])

패턴 pat로 지정된 정규식과 일치하는 문자열 표현식을 교체 문자열 repl로 바꾸고 결과 문자열을 반환합니다. expr, pat 또는 repl이 NULL이면 반환 값은 NULL입니다.

일반적인 사용: select regexp_replace('str', 'character', 'new_character');
str에 있는 문자를 포함하는 문자를 new_character로 바꿉니다.
예:

# 将name字段中的数字去掉
select regexp_replace(name, '[0-9]', '') FROM table where  date='20220101'

2.4 regexp_like

구문: regexp_like(expr, pat[, match_type])
주어진 문자열 expr이 패턴 pat를 만족하는지 비교하여 문자열이 같으면 1, 그렇지 않으면 0을 반환합니다. 선택적 match_type은 다음 문자를 허용합니다.

  • c: 대소문자 구분 매칭;
  • i: 대소문자를 구분하지 않는 일치, 기본적으로 구분하지 않음
  • m: 멀티 라인 모드. 문자열에서 줄 종결자를 인식합니다. 기본값은 문자열 표현식의 시작과 끝에서만 줄 종결자를 일치시키는 것입니다.
  • n: .line 종결자와 일치
  • u: Unix 줄 끝만 일치시킵니다. 줄 바꿈만 ., ^ 및 $로 끝나는 줄로 인식됩니다.

예: 실행: select regexp_like('MCA', 'mca');출력 1,
실행: select regexp_like('MCA', 'mca', 'c');출력 0,

2.5 regexp_substr

문법:regexp_substr(expr, pat[, pos[, occurrence[, match_type]]])

주어진 문자열 str에서 match_type을 만족하는 하위 문자열을 반환하는 데 사용됩니다.

select regexp_substr('str', 'match_type', occurrence, position);

실행: select regexp_substr('my sql function', '[a-z]+', 1, 3);, 출력: 함수

2.6 regexp_instr

문법:regexp_instr(expr, pat[, pos[, occurrence[, return_option[, match_type]]]])

regexp_instr()이 함수는 정규식 패턴 pat와 일치하는 소스 문자열 expr의 하위 문자열의 시작 인덱스를 반환합니다. 인덱스는 1부터 시작합니다. 일치하는 항목이 없으면 0을 반환합니다.

  • pos는 일치의 시작 위치를 식별하는 선택적 매개변수이며 기본값은 1입니다.
  • Occurrence는 일치하는 수를 식별하는 선택적 매개변수이며 기본값은 1입니다.
  • return_option은 반환 값의 유형을 지정하는 선택적 매개 변수입니다. 0이면 일치하는 첫 번째 문자의 위치를 ​​반환합니다. 1이면 일치하는 마지막 위치를 반환하며 기본값은 0입니다.

실행은 select regexp_instr('dog cat dog', 'dog');1을 반환하고
selectregexp_instr('dog cat dog', 'dog', 2);9를 반환합니다.

2.7 regexp_extract

MySQL 함수가 아니라 Hive 함수입니다.

3. 참고

공식 문서: https://dev.mysql.com/doc/refman/8.0/en/regexp.html

4. 관련 기사

Guess you like

Origin blog.csdn.net/craftsman2020/article/details/128965173