MySQL 正規表現 (regexp と rlike) の検索機能の例分析

MySQL 正規表現 (regexp と rlike) の検索機能の例分析

この記事では、例を使用して MySQL 正規表現 (regexp および rlike) の検索機能を説明します。ご参考までに、詳細は以下の通りです。

正規表現は検索パターンを記述する特殊な文字列であることはご存じのとおりです。 これは、文字や単語などのパターンベースのテキスト文字を認識するための簡潔で柔軟な方法を提供する強力なツールです。たとえば、正規表現を使用して、電子メール、IP アドレス、電話番号、社会保障番号、または特定のパターンを持つものを検索できます。正規表現には、正規表現プロセッサによって解釈できる独自の構文があります。正規表現は、プログラミング言語からデータベース (MySQL を含む) まで、ほとんどのプラットフォームで広く使用されています。正規表現を使用する利点は、like 演算子でパーセント記号 (%) とアンダースコア (_) を使用した固定パターンに基づいて文字列を検索することに制限されないことです。 正規表現では、柔軟なパターンを構築するためのメタ文字がさらに多くあります。

これを知って、私たちは水面下でテストをしたいと思うでしょうか? ? ?簡単に言うと、MySQL では REGEXP 演算子を使用して SQL ステートメント内のパターンを一致させることができるので、where 句の正規表現の構文形式を見てみましょう。

選択 
 列リスト
から
 テーブル名
どこ
 string_column REGEXP パターン;

この SQL ステートメントは、string_column をパターンと照合します。string_column の値がパターンと一致する場合、WHERE 句の式は 1 を返し、それ以外の場合は 0 を返します。 string_column または pattern が NULL の場合、結果は NULL になります。 REGEXP 演算子に加えて、REGEXP 演算子の同義語である RLIKE 演算子を使用することもできます。 REGEXP 演算子の否定形式は NOT REGEXP です。

それでは例を見てみましょう。名前が A、B、または C の文字で始まる製品を検索するとします。次のように、select ステートメントで正規表現を使用できます。

選択 
 製品名
から
 製品
どこ
 製品名 正規表現 '^(A|B|C)'
製品名で注文します。

上記のクエリステートメントを実行すると、次の結果が得られます。

+--------------------------------+
| 製品名 |
+--------------------------------+
| アメリカウエスト航空 B757-200 |
| アメリカン航空: B767-300 |
| アメリカン航空: MD-11S |
| 機材: B757-300 |
| ボーイング X-32A JSF |
| コレクション可能な木製列車 |
| コルセア F4U (バードケージ) |
+--------------------------------+
7行セット

このパターンを使用すると、名前が A、B、または C で始まる製品を検索できます。文字 ^ は文字列の先頭からの一致を意味し、終了文字 | は一致できない場合に代替を検索します。次の表は、正規表現でよく使用されるメタ文字と構成要素の一部を示しています。

メタ文字行動
^検索文字列の先頭の位置に一致します
$検索文字列の末尾に一致する
任意の1文字に一致
[…]角括弧内の任意の文字に一致します
[^…]角括弧内に指定されていない任意の文字に一致します
p1またはp2パターンに一致
*直前の文字の0回以上の繰り返しに一致します
+前の文字と1回以上一致する
{n}最初の数文字のn回の出現に一致する
{m,n}前の文字のmからnまでのインスタンスに一致します

名前が a で始まる製品を検索してみましょう。次のクエリに示すように、名前の先頭に「^」を使用して一致させます。

選択 
 製品名
から
 製品
どこ
 製品名 正規表現 '^a';

上記のクエリステートメントを実行すると、次の結果が得られます。

+--------------------------------+
| 製品名 |
+--------------------------------+
| アメリカン航空: B767-300 |
| アメリカウエスト航空 B757-200 |
| 機材: B757-300 |
| アメリカン航空: MD-11S |
+--------------------------------+
4行セット

REGEXP 演算子で大文字と小文字を区別して文字列を比較する場合は、BINARY 演算子を使用して文字列をバイナリ文字列に変換できます。 MySQL はバイナリ バイトを文字ごとではなくバイトごとに比較するためです。 これにより、文字列の比較で大文字と小文字を区別できるようになります。たとえば、次のステートメントは、大文字の「C」で始まる製品名のみに一致します。

選択 
 製品名
から
 製品
どこ
 製品名 REGEXP バイナリ '^C';

上記のクエリステートメントを実行すると、次の結果が得られます。

+--------------------------+
| 製品名 |
+--------------------------+
| コレクション可能な木製列車 |
| コルセア F4U (バードケージ) |
+--------------------------+
2行セット

f で終わる生成物を見つけるには、文字列の末尾に一致する '$f' を使用します。

選択 
 製品名
から
 製品
どこ
 製品名正規表現 'f$';

上記のクエリステートメントを実行すると、次の結果が得られます。

+------------------+
| 製品名 |
+------------------+
| ボーイング X-32A JSF |
+------------------+
セット内の1行

名前に「ford」が含まれる製品を検索するには、次のクエリを使用します。

選択 
 製品名
から
 製品
どこ
 製品名 REGEXP 'ford';

上記のクエリステートメントを実行すると、次の結果が得られます。

+----------------------------------+
| 製品名 |
+----------------------------------+
| 1968 フォード マスタング |
| 1969 フォード ファルコン |
| 1940 フォード ピックアップトラック |
| 1911 フォード タウンカー |
| 1932 モデル A フォード J クーペ |
| 1926 フォード消防車 |
| 1913 フォード モデル T スピードスター |
| 1934 フォード V8 クーペ |
| 1903 フォード モデル A |
| 1976 フォード グラン トリノ |
| 1940 年代のフォード トラック |
| 1957 フォード サンダーバード |
| 1912 フォード モデル T デリバリー ワゴン |
| 1940 フォード デリバリー セダン |
| 1928 フォード フェートン デラックス |
+----------------------------------+
15行セット

名前に 10 文字しか含まれていない製品を検索するには、次のクエリのように、製品名の先頭と末尾に '^' と '$' を使用して任意の文字を {10} 回繰り返します。

選択 
 製品名
から
 製品
どこ
 製品名正規表現 '^.{10}$';

上記のクエリステートメントを実行すると、次の結果が得られます。

+-------------+
| 製品名 |
+-------------+
|HMS バウンティ |
| ポンヨット |
+-------------+
2行セット

実はこのクエリ方法は固定で、可変なのは記述する正規表現なので、具体的にどのように使うかは各自の能力次第です。

はい、今日はこれで終わりです。

PS: 以下に、参考までに非常に便利な正規表現ツールを 2 つ示します。

JavaScript 正規表現オンラインテストツール:
http://tools.jb51.net/regex/javascript

正規表現オンライン生成ツール:
http://tools.jb51.net/regex/create_reg

MySQL 関連のコンテンツに興味のある読者は、次のトピックを確認してください: 「MySQL 共通関数の概要」、「MySQL ログ操作スキルの概要」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの概要」、および「MySQL データベース ロック関連スキルの概要」。

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MYSQLパターンマッチングREGEXPの使用に関する一般的な話など
  • MySQL での正規表現置換のための replace と regexp の使用法の分析
  • MySQL ファジークエリ LIKE と REGEXP の使用に関する詳細な紹介
  • MySQL で REGEXP 正規表現を使用するための完全ガイド
  • MySQL のあいまいクエリと正規表現の概要
  • MySQL データベースでの replace と regexp の使用
  • 正規表現を使用した MySQL クエリ操作の典型的な例のまとめ
  • MySQLの構文、特殊記号、正規表現の詳細な説明
  • MySql で正規表現クエリを使用する方法
  • mysql 正規表現クエリに数字以外の文字のレコードが含まれています
  • MySQL 正規表現の簡単な紹介
  • MYSQLは正規表現を使用してデータをフィルタリングします
  • MySQLで正規表現クエリを使用する方法
  • MySQL 正規表現チュートリアル
  • MySql 公式マニュアル学習ノート 2 MySql ファジークエリと正規表現
  • Coolcode から SyntaxHighlighter および MySQL 正規表現実装分析
  • MySQL 文字列パターンマッチング 拡張正規表現パターンマッチング
  • mysql 正規表現 LIKE ワイルドカード
  • MySql で正規表現を使用する方法の説明
  • MySQL で正規表現を使用してデータベースのコンテンツを置換する方法
  • MySQLにおける正規表現の一般的な使用法

<<:  アップロード画像コントロールを実現するネイティブ js

>>:  vscode を使用したリモート Linux 開発の実装

推薦する

JavaScript でオブジェクトをトラバースする 5 つの方法 サンプルコード

目次準備する5つの武器…のためにオブジェクト.キーオブジェクト.getOwnPropertyName...

MySQL インデックスがソートに与える影響の分析例

この記事では、例を使用して、MySQL インデックスがソートに与える影響を説明します。ご参考までに、...

Webデザインチュートリアル(8):Webページの階層と空間デザイン

<br />前回の記事:Webデザイン講座(7):Webページ制作の効率化1:必要な小言...

Vue はフォームデータ検証のサンプルコードを実装します

el-form フォームにルールを追加します。データにルールを定義する定義されたルールをel-for...

一般的な XHTML タグの紹介

<br />しばらくの間、多くの人が XHTML の使い方を知らないことに気付きました。...

SpringBoot のパッケージ化と Docker へのアップロード、およびマルチインスタンス デプロイメントの実装に関する簡単な分析 (IDEA バージョン)

最近友人からDockerを触ったことがあるかと聞かれました。あまり自信がなかったので答えられませんで...

HTML における画像タグの使用方法の詳細な説明

HTML では、<img> タグはテキスト内の画像タグを定義するために使用されます。その...

MySQL の列から行への変換、フィールドの結合方法 (必読)

データシート:列から行へ: max(case when then) を使用max---集計関数は最大...

MySQL ストアド プロシージャの概念、原則、一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャの概念、原則、および一般的な使用法につ...

有名ウェブサイトのロゴにおすすめのフォント40選

世界で最も有名なウェブサイトのロゴデザインにはどんなフォントが使われているかご存知ですか?これらのフ...

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決します

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決しますコード例: var...

ウェブデザインにおける画像フォーマットとデザインの関係を詳しく説明

なぜこの領域のコンテンツを整理したいのでしょうか。それは、油絵の具とキャンバスを理解する必要があり、...

理論: 2年間のユーザーエクスペリエンス

<br />国内のウェブサイトが本格的に普及し、ユーザーエクスペリエンスに重点が置かれる...

TSで最も一般的な宣言マージ(インターフェースマージ)

目次1. マージインターフェース1.1 非関数メンバー1.2 関数メンバー序文:今日お話ししたいのは...

MySQL への接続時に発生する 1449 および 1045 例外の解決方法

MySQL への接続時に発生する 1449 および 1045 例外の解決方法 mysql 1449:...