MySQL 표준 SQL 패턴 일치 하며 6, grep, 스트림 같은 유닉스 유틸리티를 기반으로 하는 정규 표현식 패턴 일치 확장 하기 위한 형식
표준 SQL 패턴 일치
SQL 패턴 일치를 사용 하면 모든 단일 문자 "_", "%" 문자 (0 문자 포함)의 수와 일치 하는 동안 일치 수 있습니다. MySQL, SQL 스키마는 무시 하는 경우 기본값입니다. 몇 가지 예는 다음과 같습니다. SQL 모드를 사용할 때 사용할 수 없습니다 = 또는! =;
예를 들어 테이블 애완 동물, "B"로 시작 하는 이름의 찾을에:
mysql > 선택 * 애완 동물 어디 이름 "b %";
+--------+--------+---------+------+------------+------------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+--------+--------+---------+------+------------+------------+
| 버 피 | 해 롤 드 | 개 | f | 1989-05-13 | NULL |
| Bowser | 다이앤 | 개 | m | 1989 년 08 월 31 일 | 1995 년 07 월 29 일 |
+--------+--------+---------+------+------------+------------+
"년도"로 끝나는 이름을 찾으려면:
Mysql > 선택 * 같은 애완 동물 어디 이름에서 "% 년도";
+--------+--------+---------+------+------------+-------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+--------+--------+---------+------+------------+-------+
| 솜 털 | 해 롤 드 | 고양이 | f | 1993-02-04 | NULL |
| 버 피 | 해 롤 드 | 개 | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
"W"를 포함 하는 이름을 찾으려면:
mysql > 선택 * 애완 동물 어디 이름 "%w%";
+----------+-------+---------+------+------------+------------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+----------+-------+---------+------+------------+------------+
| 발톱 | 그웬 | 고양이 | m | 1994-03-17 | NULL |
| Bowser | 다이앤 | 개 | m | 1989 년 08 월 31 일 | 1995 년 07 월 29 일 |
| 휘슬러 | 그웬 | 새 | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
"_" 모드 문자를 사용 하 여 정확히 5 자를 포함 하는 이름을 찾을:
mysql > 선택 * "_"; 같은 애완 동물 어디 이름에서
+-------+--------+---------+------+------------+-------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+-------+--------+---------+------+------------+-------+
| 발톱 | 그웬 | 고양이 | m | 1994-03-17 | NULL |
| 버 피 | 해 롤 드 | 개 | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
MySQL 표준 SQL 패턴 일치 하며 6, grep, 스트림 같은 유닉스 유틸리티를 기반으로 하는 정규 표현식 패턴 일치 확장 하기 위한 형식
정규식 패턴 일치 확장
다른 유형의 패턴 일치 MySQL에서 제공 하는 확장된 정규 표현식의 사용입니다. 테스트에이 패턴과 일치 하는 경우 사용 하 여 regexp 및 하지 regexp 연산자 (또는 rlike 하지 rlike, 동의어입니다).
확장된 정규 표현식의 일부 문자는:
"." 단일 문자를 찾습니다.
한 문자 클래스 [...] 대괄호에서 문자를 찾습니다. 예를 들어 "[ABC]" 일치 "a", "B", 또는 "C". 문자 범위 이름을 사용 하 여는 "-".
모든 소문자와 "[0-9]" [a-z]와 일치 수 일치.
"*" 0 또는 그것의 앞에 더 많은 것 들. 예를 들어 "x *" 일치 "X" 문자, 수 "[0-9] *" 숫자, 임의 개수의 일치와 ". *" 아무것도의 수를 일치.
정규식은 대 소문자를 구분 하지만 하려는 경우, 쓰기의 두 가지 방법으로 일치 하는 문자 클래스를 사용할 수 있습니다. 예를 들어 "[AA]" 선수 중 소문자 또는 대문자 "a" 및 "[A-za-z]" 선수의 두 가지 방법으로 편지.
나타나면 어디 테스트 값에, (로 그들은 전체 값과 일치 하 고 SQL 패턴 일치) 패턴 일치 합니다.
그것은 시작 또는 시험된 값의 끝과 일치 해야 합니다 있도록 패턴을 찾으려면, 사용 "^" 또는 "$"로 패턴의 끝에는 패턴의 시작 부분에.
설명 하기 위해 아래와 같은 쿼리 RegExp 재정의 사용 하 여 확장된 정규식 작동 하는 방법:
"B"로 시작 하는 이름을 사용 하십시오 "^" 일치 하는 첫 번째 이름과 "[BB]" 일치 하는 소문자 또는 대문자 "B"의 시작에:
Mysql > 선택 * 애완 동물 어디 이름 REGEXP에서에서 "^ [BB]";
+--------+--------+---------+------+------------+------------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+--------+--------+---------+------+------------+------------+
| 버 피 | 해 롤 드 | 개 | f | 1989-05-13 | NULL |
| Bowser | 다이앤 | 개 | m | 1989 년 08 월 31 일 | 1995 년 07 월 29 일 |
+--------+--------+---------+------+------------+------------+
"년도"로 끝나는 이름을 찾으려면, "$"를 사용 하 여 일치 하는 이름 끝에:
mysql > 선택 * 애완 동물 어디 이름 REGEXP에서 "Fy___fckpd___5quot;
+--------+--------+---------+------+------------+-------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+--------+--------+---------+------+------------+-------+
| 솜 털 | 해 롤 드 | 고양이 | f | 1993-02-04 | NULL |
| 버 피 | 해 롤 드 | 개 | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
"W"를 포함 하는 이름을 찾으려면, "[WW]"을 사용 하 여 소문자 또는 대문자 "W" 일치:
mysql > 선택 * 애완 동물 어디 이름 REGEXP "[WW]";
+----------+-------+---------+------+------------+------------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+----------+-------+---------+------+------------+------------+
| 발톱 | 그웬 | 고양이 | m | 1994-03-17 | NULL |
| Bowser | 다이앤 | 개 | m | 1989 년 08 월 31 일 | 1995 년 07 월 29 일 |
| 휘슬러 | 그웬 | 새 | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
때문에 정규 표현식에 나타나는 경우 어디 값과 패턴 일치, 그것은 전체 값과 일치 패턴의 양쪽에 이전 쿼리에서 와일드 카드 문자를 배치 하려면 아무 필요도 없다.
SQL 모델을 사용 하는 경우 처럼.
정확히 5 문자가 포함 된 이름을 사용 하십시오 "^" 및 "$"에 맞게 시작 및 첫 번째 이름, 그리고 5의 끝 "." 사이 인스턴스:
mysql > 선택 * 애완 동물 어디 이름 REGEXP에서 "^... ___fckpd___7quot;
+-------+--------+---------+------+------------+-------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+-------+--------+---------+------+------------+-------+
| 발톱 | 그웬 | 고양이 | m | 1994-03-17 | NULL |
| 버 피 | 해 롤 드 | 개 | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
또한 "{n}" "반복 n" 연산자를 사용 하 여 이전 쿼리를 다시 작성할 수 있습니다.
mysql > 선택 * 애완 동물 어디 이름 REGEXP에서에서 "^. {5} ___fckpd___8quot;
+-------+--------+---------+------+------------+-------+
| 이름 | 소유자 | 종 | 섹스 | 출생 | 죽음 |
+-------+--------+---------+------+------------+-------+
| 발톱 | 그웬 | 고양이 | m | 1994-03-17 | NULL |
| 버 피 | 해 롤 드 | 개 | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
요약
이 문서에서는 문자열 패턴 일치에 대 한 지식을 설명합니다. 표준 SQL 패턴 일치 SQL 언어에 대 한 표준 이며 다른 관계형 데이터베이스 시스템에 의해 받아들여질 수 있다. 정규식 패턴 일치 확장
유닉스 시스템의 표준에 따라 개발 되 고는 일반적으로 기능 하지만, MySQL에서 사용할 수는 표준 SQL 패턴 보다 더 강한.