>데이터 베이스 >MySQL 튜토리얼 >REGEXP와 일치하는 MYSQL 패턴 및 유사 코드 사용 공유에 대한 자세한 논의

REGEXP와 일치하는 MYSQL 패턴 및 유사 코드 사용 공유에 대한 자세한 논의

黄舟
黄舟원래의
2017-03-25 13:42:051842검색

아래 편집기는 MYSQLREGEXP와 같은 패턴 매칭 사용에 대한 진부한 표현을 제공합니다. 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 편집자를 따라가서 살펴보겠습니다.

like

전체 데이터가 필요합니다. REGEXP에는 부분 일치만 필요합니다. 즉, Like를 사용하려면 이 필드의 모든 내용이 조건을 충족해야 하지만 REGEXP는 조건을 충족하려면 하나의 조각만 있으면 됩니다.
MySQL은 표준 SQL 패턴 일치(like)뿐만 아니라 vi, grep, sed( regexp)와 같은 Unix 유틸리티를 기반으로 하는 확장된 정규 표현식

패턴 일치 형식도 제공합니다.

SQL 패턴 일치를 사용하면 "_"를 사용하여 단일 문자를 일치시키고 "%"를 사용하여 임의 개수의 문자(0개 문자 포함)를 일치시킬 수 있습니다. MySQL에서 SQL 모드는 기본적으로 대소문자 무시로 설정되어 있습니다. 아래에 몇 가지 예가 나와 있습니다. SQL 모드를 사용할 때는 = 또는 !=를 대신 사용할 수 없으며 LIKE 또는 NOT LIKE 비교 연산자
를 사용하세요. "b"로 시작하는 이름을 찾으려면:

mysql> SELECT * FROM pet WHERE name LIKE "b%";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

"fy"로 끝나는 이름을 찾으려면:

mysql> SELECT * FROM pet WHERE name LIKE "%fy";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+

"w"가 포함된 이름을 찾으려면:

mysql> SELECT * FROM pet WHERE name LIKE "%w%";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+

정확히 5자가 포함된 이름을 찾으려면 "_" 패턴을 사용하세요. 문자:

mysql> SELECT * FROM pet WHERE name LIKE "_";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

REGEXP

또 다른 유형의 일치는 정규식을 기반으로 합니다. 이러한 패턴에 대한 일치 항목을 테스트할 때는 REGEXP 및 NOT REGEXP 연산자(또는 동의어인 RLIKE 및 NOT RLIKE)를 사용하십시오.

"."은 모든 단일 문자와 일치합니다.

문자 클래스 "[...]"는 대괄호 안의 모든 문자와 일치합니다. 예를 들어 "[abc]"는 "a", "b" 또는 "c"와 일치합니다. 문자 범위의 이름을 지정하려면 "-"를 사용하십시오. "[a-z]"는 모든 소문자와 일치하고 "[0-9]"는 모든 숫자와 일치합니다.

" * "는 앞에 오는 항목 중 0개 이상과 일치합니다. 예를 들어, "x*"는 임의 개수의 "x" 문자와 일치하고, "[0-9]*"는 임의 개수의 자릿수와 일치하며, ".*"는 임의 개수의 임의 문자와 일치합니다.

정규 표현식은 대소문자를 구분합니다

. 하지만 원하는 경우 문자 클래스를 사용하여 두 글을 모두 일치시킬 수 있습니다. 예를 들어, "[aA]"는 소문자 또는 대문자 "a"와 일치하고 "[a-zA-Z]"는 두 가지 방식으로 작성된 모든 문자와 일치합니다.

테스트 중인 값의 어느 곳에나 나타나면 패턴이 일치합니다(SQL 패턴은 전체 값과 일치하는 한 일치합니다).

테스트 중인 값의 시작 또는 끝과 일치하도록 패턴을 배치하려면 패턴 시작 부분에 "^"를 사용하거나 패턴 끝 부분에 "$"를 사용하세요. 무늬.
확장 정규식이 어떻게 작동하는지 설명하기 위해 위에 표시된 LIKE 쿼리는 REGEXP를 사용하여 아래에 다시 작성되었습니다. 다음으로 시작하는 이름의 경우 "^"를 사용하여 이름의 시작 부분을 일치시키고 " [bB]"를 소문자 또는 대문자 "b"와 일치시키려면:

mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+
"fy"로 끝나는 이름을 찾으려면 "$"를 사용하여 이름 끝을 일치시키십시오.
mysql> SELECT * FROM pet WHERE name REGEXP "fy$";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
"w"가 포함된 이름을 찾으려면 "[wW]"를 사용하여 소문자 또는 대문자 "w"와 일치시킵니다.
mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+

[^… …], w/z/s

select name from 表名 where name regexp '^[^wzs]';

*로 시작하지 않는 이름을 쿼리하는 등 []에 포함되지 않은 문자와 일치합니다. javascript
규칙성은

'str*'이 st/str/strr/strrr...과 일치할 수 있다는 것을 알고 있습니다. 0 또는 1회 반복하세요

'str?'은 st/str과 일치할 수 있습니다+, 1회 이상 반복됨

'str+'는 str/strr/strrr /strrrr과 일치할 수 있음......

JavaScript의 일반 규칙과 비교하면 여기의 일반 규칙은 단순화된 버전입니다. wsd의 구문은 []에서 지원되지 않으며 비교적 간단합니다.

.

위 내용은 REGEXP와 일치하는 MYSQL 패턴 및 유사 코드 사용 공유에 대한 자세한 논의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.