この記事では、例を使用して 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 で始まる製品を検索できます。文字 ^ は文字列の先頭からの一致を意味し、終了文字 | は一致できない場合に代替を検索します。次の表は、正規表現でよく使用されるメタ文字と構成要素の一部を示しています。
名前が 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 正規表現オンラインテストツール: 正規表現オンライン生成ツール: MySQL 関連のコンテンツに興味のある読者は、次のトピックを確認してください: 「MySQL 共通関数の概要」、「MySQL ログ操作スキルの概要」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの概要」、および「MySQL データベース ロック関連スキルの概要」。 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: アップロード画像コントロールを実現するネイティブ js
>>: vscode を使用したリモート Linux 開発の実装
目次1. 概要1. スカイウォーキング入門2. スカイウォーキング建築3. スカイウォーキングはどの...
目次バイナリ検索木 (BST) とは何ですか?バイナリツリーの基本的な走査(インオーダー、ポストオー...
ssh に入り、次のコマンドを入力してパスワードをリセットします (コマンドの末尾の「testpas...
2017 年に Vulhub に取り組み始めてから、私は厄介な問題に悩まされてきました。Docker...
Electronのインストール cnpm 電子をインストール -g electron-package...
3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイス...
概要:市販されているいくつかのタイムテーブルソフトウェアから教訓を得ました。機能が複雑すぎるため、タ...
ウェブサイトがワイドスクリーンの場合、ブラウザ ウィンドウを左右にドラッグすると、ウェブサイトの幅が...
今日はベテランの貴重な経験を共有します。著者は技術管理の経験が7年あり、多い時は80人以上を率いてい...
1. 背景1. フロントエンドはvue + vuex + socket.io-clientを使用しま...
この記事では、例を使用して、MySQL 5.7 で生成された列の使用方法を説明します。ご参考までに、...
Microsoft は後からブラウザの研究開発に力を入れてきましたが、実際のところ、最新の IE ブ...
序文MySQL データベース ロックは、データの一貫性を実現し、同時実行性の問題を解決するための重要...
序文実際、Linux では、控えめな「!」が驚くほど多くの用途で使用されています。この記事では、「!...
この記事は、透明度を変えてカルーセルにするXiaomiカルーセルを真似て書いたものです。初心者なので...