MYSQLパターンマッチングREGEXPの使用に関する一般的な話など

MYSQLパターンマッチングREGEXPの使用に関する一般的な話など

のように

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

MySQL は、標準の SQL パターン マッチング (like) に加えて、vi、grep、sed などの Unix ユーティリティで使用されるものと同様の拡張正規表現パターン マッチングに基づく形式 (regexp) も提供します。
SQL パターン マッチングでは、任意の 1 文字に一致させるには「_」を使用し、任意の数の文字 (0 文字を含む) に一致させるには「%」を使用できます。 MySQL では、SQL モードはデフォルトで大文字と小文字を区別しません。以下にいくつかの例を示します。 SQL モードを使用する場合、= または != は使用できないことに注意してください。代わりに、LIKE または NOT LIKE 比較演算子を使用します。

「b」で始まる名前を検索するには:

mysql> SELECT * FROM pet WHERE name LIKE "b%";
+--------+---------+---------+----------+------------+------------+
| 名前 | 所有者 | 種 | 性別 | 生年月日 | 死亡日 |
+--------+---------+---------+----------+------------+------------+
| バフィー | ハロルド | 犬 | 女性 | 1989-05-13 | NULL |
| クッパ | ダイアン | 犬 | 男性 | 1989-08-31 | 1995-07-29 |
+--------+---------+---------+----------+------------+------------+

「fy」で終わる名前を検索するには:

mysql> SELECT * FROM pet WHERE name LIKE "%fy";
+--------+---------+---------+---------+---------+-------+
| 名前 | 所有者 | 種 | 性別 | 生年月日 | 死亡日 |
+--------+---------+---------+---------+---------+-------+
| ふわふわ | ハロルド | 猫 | f | 1993-02-04 | NULL |
| バフィー | ハロルド | 犬 | 女性 | 1989-05-13 | NULL |
+--------+---------+---------+---------+---------+-------+

「w」を含む名前を検索するには:

mysql> SELECT * FROM pet WHERE name LIKE "%w%";
+----------+--------+---------+----------+------------+------------+
| 名前 | 所有者 | 種 | 性別 | 生年月日 | 死亡日 |
+----------+--------+---------+----------+------------+------------+
| 爪 | グウェン | 猫 | m | 1994-03-17 | NULL |
| クッパ | ダイアン | 犬 | 男性 | 1989-08-31 | 1995-07-29 |
| ウィスラー | グウェン | 鳥 | NULL | 1997-12-09 | NULL |
+----------+--------+---------+----------+------------+------------+

ちょうど 5 文字を含む名前を検索するには、「_」パターン文字を使用します。

mysql> SELECT * FROM pet WHERE name LIKE "_____";
+-------+---------+---------+----------+--------+-------+
| 名前 | 所有者 | 種 | 性別 | 生年月日 | 死亡日 |
+-------+---------+---------+----------+--------+-------+
| 爪 | グウェン | 猫 | m | 1994-03-17 | NULL |
| バフィー | ハロルド | 犬 | 女性 | 1989-05-13 | NULL |
+-------+---------+---------+----------+--------+-------+

正規表現

別の種類のマッチングは正規表現に基づいています。このようなパターンの一致をテストする場合は、REGEXP 演算子と NOT REGEXP 演算子 (または同義語の RLIKE と NOT RLIKE) を使用します。

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

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

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

パターンは、テスト対象の値のどこかに出現する場合に一致します (SQL パターンは、値全体が一致する限り一致します)。
テストする値の先頭または末尾に一致するようにパターンを配置するには、パターンの先頭に「^」を使用するか、パターンの末尾に「$」を使用します。
拡張正規表現がどのように機能するかを説明するために、上記の LIKE クエリを REGEXP を使用して以下のように書き換えます。
「b」で始まる名前を検索するには、名前の先頭に一致するように「^」を使用し、小文字または大文字の「b」に一致するように「[bB]」を使用します。

mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
+--------+---------+---------+----------+------------+------------+
| 名前 | 所有者 | 種 | 性別 | 生年月日 | 死亡日 |
+--------+---------+---------+----------+------------+------------+
| バフィー | ハロルド | 犬 | 女性 | 1989-05-13 | NULL |
| クッパ | ダイアン | 犬 | 男性 | 1989-08-31 | 1995-07-29 |
+--------+---------+---------+----------+------------+------------+

「fy」で終わる名前を検索するには、名前の末尾に一致する「$」を使用します。

mysql> SELECT * FROM pet WHERE name REGEXP "fy$";
+--------+---------+---------+---------+---------+-------+
| 名前 | 所有者 | 種 | 性別 | 生年月日 | 死亡日 |
+--------+---------+---------+---------+---------+-------+
| ふわふわ | ハロルド | 猫 | f | 1993-02-04 | NULL |
| バフィー | ハロルド | 犬 | 女性 | 1989-05-13 | NULL |
+--------+---------+---------+---------+---------+-------+

「w」を含む名前を検索するには、小文字または大文字の「w」に一致する「[wW]」を使用します。

mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
+----------+--------+---------+----------+------------+------------+
| 名前 | 所有者 | 種 | 性別 | 生年月日 | 死亡日 |
+----------+--------+---------+----------+------------+------------+
| 爪 | グウェン | 猫 | m | 1994-03-17 | NULL |
| クッパ | ダイアン | 犬 | 男性 | 1989-08-31 | 1995-07-29 |
| ウィスラー | グウェン | 鳥 | NULL | 1997-12-09 | NULL |
+----------+--------+---------+----------+------------+------------+

[^……]は[]に含まれない文字と一致します。例えば、w/z/sで始まる名前を検索します。

テーブル名から名前を選択します。名前の正規表現は '^[^wzs]' です。

*、0回以上繰り返される、JavaScriptの正規表現に精通している学生は知っている

'str*' は st/str/strr/strrr に一致します...

?、0回または1回繰り返す

'str?' は st/str に一致します

+、1回以上繰り返す

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

JavaScript の正規表現と比較すると、ここでの正規表現は簡略化されたバージョンです。遅延一致/貪欲一致はありません。[] では \w\s\d の構文はサポートされておらず、中国語はサポートされていません。比較的単純です

MYSQL パターン マッチング REGEXP の使用法に関する上記の記事は、エディターが皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQLの最適化の詳細な分析とパフォーマンス
  • Mysql | ワイルドカード(%、_ など)を使用したファジークエリの詳細な説明
  • MySQL ファジークエリ LIKE と REGEXP の使用に関する詳細な紹介
  • 複数キーワード検索を実現する PHP MySQL のような方法
  • MySQL でのテーブルレプリケーション: create table like および create table as select
  • mysql のようなクエリ文字列の例文
  • mysql 正規表現 LIKE ワイルドカード
  • MySQLのファジークエリのような遅い速度を解決する方法

<<:  VmWareでcentos7をインストールするときにインターネットにアクセスできない問題の解決策

>>:  Linux システムで Code Cloud にプロジェクトをアップロードする方法

推薦する

MySQL 8.0.12 winx64 解凍バージョンのインストール グラフィック チュートリアル

mysql-8.0.12-winx64 解凍版のインストールを記録して、みんなで共有しました。 1....

CSS スタイルの優先順位はどれくらい複雑ですか?

昨晩、面接の質問を見ていたら、CSS スタイルの優先順位について特に明確に説明していない人が何人かい...

MySQLの暗黙的な変換について話す

作業の過程で、暗黙的な変換が発生するケースが数多くあります。暗黙的な変換は、クエリの速度低下を引き起...

MySQL インデックスの一般的な問題の概要

Q1: データベースにはどのようなインデックスがありますか?メリットとデメリットは何ですか? 1. ...

CentOS に PHP5 をインストール、PHP をアンインストール、PHP7 をインストールするチュートリアル

まず、PHP5をインストールするのはとても簡単ですyum install php PHP5 を使用し...

Vueのドラッグ可能なコンポーネントであるVue Smooth DnDの使用方法の詳細な説明

目次紹介とデモAPI: コンテナ財産ライフサイクルコールバックイベントAPI: ドラッグ可能実際の戦...

MySQL交換パーティションの詳細な例

MySQL交換パーティションの詳細な例序文exchange パーティションを紹介する前に、まず my...

HttpとHttpsの両方をサポートするNginxの詳細な設定

最近の Web サイトでは Https をサポートすることがほぼ標準機能となっており、Nginx は...

win10でのmysql5.7.21解凍バージョンのインストールチュートリアル

次のように、Win10でMysqlの解凍バージョンをインストールします。環境: win10 64ビッ...

Vueのフロントエンドとバックエンドのデータのやり取りと表示を理解する方法

目次1. 技術概要2. 技術的な詳細1. インターフェースからバックエンドデータを取得する2. フロ...

インタラクティブな視覚化 JS ライブラリ gojs の使い方の紹介とヒント

目次1. gojsの紹介2. Gojsのアプリケーションシナリオ3. gojs を選ぶ理由: 4. ...

初心者向け入門講座⑧:記事サイトを簡単に作る

前回の投稿では、Web ページの作成方法について説明しました。Web サイトは多くの Web ページ...

CentOS 8 に Docker をインストールする詳細なチュートリアル

1. 以前のバージョン yum 削除 docker docker-client docker-cli...

CSS3の3D効果を使って立方体を作成する

CSS3 の 3D 効果を使用して立方体を作成する方法を学ぶと、3D シーンの回転と変位のプロパティ...

WebページでjQueryを参照する方法

CDN(コンテンツ配信ネットワーク)を通じて参照できます。 jQuery は Google と Mi...