ホームページ > データベース > mysql チュートリアル > MYSQL パターン マッチング REGEXP および同様のコード使用法の共有に関する詳細な説明

MYSQL パターン マッチング REGEXP および同様のコード使用法の共有に関する詳細な説明

黄舟
リリース: 2017-03-25 13:42:05
オリジナル
1846 人が閲覧しました

以下のエディターは、決まり文句 MYSQLパターン マッチング REGEXP などの使用法を示します。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。エディターをフォローして見てみましょう。

like

likeではデータ全体の一致が必要ですが、REGEXPでは部分的な一致のみが必要です。
言い換えると、Like を使用するには、このフィールドのすべての内容が条件を満たす必要がありますが、REGEXP では条件を満たすために必要なフラグメントは 1 つだけです。

MySQL は、標準 SQL パターン マッチング (類似) に加え、vi、grep、sed などの Unix ユーティリティに基づいた拡張 正規表現パターン マッチング形式 (regexp) を提供します。
SQL パターン マッチングでは、「_」を使用して任意の 1 文字と一致し、「%」を使用して任意の数の文字 (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) を使用します。

「.」は任意の 1 文字と一致します。

文字クラス「[...]」は、角括弧内の任意の文字と一致します。たとえば、「[abc]」は「a」、「b」、または「c」に一致します。文字範囲に名前を付けるには、「-」を使用します。 「[a-z]」は任意の小文字と一致し、「[0-9]」は任意の数字と一致します。
「 * 」は、その前にある 0 個以上の内容と一致します。たとえば、「x*」は任意の数の「x」文字に一致し、「[0-9]*」は任意の数の数字に一致し、「.*」は任意の数に一致します。

正規表現では大文字と小文字が区別されますが、必要に応じて、文字クラスを使用して両方の記述を一致させることができます。たとえば、「[aA]」は小文字または大文字の「a」と一致し、「[a-zA-Z]」はいずれかの方法で書かれた文字と一致します。

パターンは、テスト対象の値のどこかに出現する場合に一致します (SQL パターンは、値全体と一致する限り一致します)。
テスト対象の値の先頭または末尾に一致するようにパターンを配置するには、パターンの先頭に「^」を使用するか、パターンの末尾に「$」を使用します。
拡張正規表現がどのように機能するかを説明するために、上記の LIKE クエリを REGEXP を使用して以下に書き換えます:
「b」で始まる名前を検索するには、「^」を使用して名前の先頭と一致させ、「 [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]';
ログイン後にコピー

*、0 回以上繰り返されます。

javascriptに慣れている学生は、

'str*' が st/str/strr/strrr...

に一致することを知っています。 ?、0 回または 1 回繰り返されます

'str?' は st/str

+ と一致します、1 回以上繰り返されます

'str+' は str/strr/strrr/strrr と一致します...

と比較JavaScript の正規表現。ここでの正規表現は簡略化されたもので、遅延マッチング/貪欲マッチングはありません。wsd 構文は [] でサポートされておらず、中国語もサポートされていません。比較的単純です。

以上がMYSQL パターン マッチング REGEXP および同様のコード使用法の共有に関する詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート