기사 디렉토리
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