Mysql | ワイルドカード(%、_ など)を使用したファジークエリの詳細な説明

Mysql | ワイルドカード(%、_ など)を使用したファジークエリの詳細な説明

ワイルドカードのカテゴリ:

%パーセント ワイルドカード: 任意の文字が任意の回数出現できることを示します (0 回も可能)。

_下線付きワイルドカード: 一致できる文字は 1 文字のみであり、それ以上でもそれ以下でもなく、1 文字のみであることを意味します。

いいね演算子:

LIKE の役割は、後続の検索パターンでは比較のために直接的な等価一致ではなくワイルドカードを使用するように MySQL に指示することです。

注: ユニバーサル マッチャーなしで like 演算子を使用すると、結果は = と同じになります。SELECT * FROM products WHERE products.prod_name like '1000'; は結果 1000 にのみ一致し、JetPack 1000 には一致しません。

1)% ワイルドカードの使用率:

「yves」で始まるレコードに一致します: (「yves」レコードを含む)

SELECT * FROM products WHERE products.prod_name like 'yves%';

「yves」を含むレコード(「yves」を含むレコードを含む)に一致します

SELECT * FROM products WHERE products.prod_name like '%yves%';

「yves」で終わるレコードに一致します(「yves」のレコードを含みますが、「yves」のレコードは除きます。つまり、yves の後にスペースがあるレコードです。注意してください)。

SELECT * FROM products WHERE products.prod_name like '%yves';

2)_ワイルドカードの使用:

SELECT * FROM products WHERE products.prod_name like '_yves';

一致する結果は、「yyves」のようなレコードです。

SELECT * FROM products WHERE products.prod_name like 'yves__';

一致する結果は、「yvesHe」のようなレコードです。(アンダースコアは 1 文字のみと一致し、それ以上でもそれ以下でもありません)

注記:

大文字と小文字に注意してください。あいまい一致、つまりテキストの一致を使用する場合、MySQL は大文字と小文字を区別する場合と区別しない場合があります。この結果は、ユーザーが MySQL をどのように構成するかによって異なります。大文字と小文字が区別される場合、YvesHe のようなレコードは、"yves__" のような一致条件と一致しません。

末尾のスペースに注意してください。「%yves」は「heyves」のようなレコードとは一致しません。

NULL および % ワイルドカードは任意の文字と一致しますが、NULL とは一致しないことに注意してください。つまり、SELECT * FROM products WHERE products.prod_name like '%'; は、products.prod_name が NULL であるレコードとは一致しません。

ヒントと提案:

ご覧のとおり、MySQL ワイルドカードは非常に便利です。ただし、この機能にはコストがかかります。ワイルドカード検索は通常、前述の他の検索よりも処理に時間がかかります。ワイルドカードを使用する際に覚えておくべきヒントをいくつか紹介します。

ワイルドカードを過度に使用しないでください。他の演算子で同じ目的を達成できる場合は、他の演算子を使用する必要があります。

ワイルドカードを使用する必要がある場合は、絶対に必要な場合を除き、検索パターンの先頭で使用しないでください。検索パターンの先頭にワイルドカードを配置すると、検索速度は最も遅くなります。

ワイルドカード文字の配置に注意してください。間違った場所に配置すると、期待した数値が返されない可能性があります。

追加知識: MySQL LIKEファジークエリ%_ワイルドカードはすべてのデータをクエリします

最近、ページング クエリ テストのバッチを作成しました。クエリの結果、2 つの特殊文字 _ % を使用すると、すべてのデータがクエリされることがわかりました。クエリ条件は機能せず、結果はテストで期待したものとは異なりました。

後で、これら 2 つの特殊文字は SQL LIKE クエリのワイルドカードであり、任意の文字を表すことができることがわかりました。

最終的に2つの解決策を思いつきました

1.これらの2つの特殊文字をエスケープして達成する

2. 従来の LIKE クエリ メソッドの代わりに、より高速な内部関数 INSTR を使用します。

INSTR() 関数は、文字列内の部分文字列が最初に出現する位置を返します。 str 内に部分文字列が見つからない場合、INSTR() 関数はゼロ (0) を返します。

以下では、INSTR 関数の構文について説明します。

INSTR(name,'Xiao Ming') のユーザーから * を選択します。

上記の記事Mysql | ワイルドカード(%、_など)を使用したファジークエリの詳細な説明は、編集者があなたと共有するすべてのコンテンツです。これが参考になれば幸いです。また、123WORDPRESS.COMをサポートしていただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL ファジークエリの使用法 (通常、ワイルドカード、組み込み関数)
  • MySQL データベースのステートメント ワイルドカード ファジー クエリの概要
  • MySQL でのワイルドカードを使用したファジークエリの実装に関する簡単な説明
  • MySQL ファジークエリにおけるワイルドカードエスケープについての簡単な説明
  • MYSQL 必読ノート 第 8 章: フィルタリングにワイルドカードを使用する
  • MySQLでワイルドカードを使用する際の注意点
  • MySql のファジークエリワイルドカードの使用に関する詳細な紹介
  • mysql 正規表現 LIKE ワイルドカード
  • mysql ワイルドカード (sql 高度なフィルタリング)

<<:  Linux sedコマンドの使用

>>:  Vue3とTypeScriptを組み合わせたプロジェクト開発の実践記録

推薦する

VueはPCで写真をアップロードする機能を実現

この記事の例では、PC上で写真アップロード機能を実現するためのVueの具体的なコードを参考までに共有...

Linux bzip2 コマンドの使用

1. コマンドの紹介bzip2 は、ファイルの圧縮と解凍に使用されます。これは、Linux システム...

CentOS7 は yum を使用して mysql 8.0.12 をインストールします

この記事では、centos7にyumを使用してMySQL 8.0.12をインストールする詳細な手順を...

Vue フロントエンド開発における階層的にネストされたコンポーネント間の通信の詳細な説明

目次序文例まとめ序文Vue の親子コンポーネントは、props を通じて親コンポーネントの値を子コン...

IDEA の Docker プラグインを介して SpringBoot プロジェクトをデプロイするプロセスの詳細な説明

1. Dockerリモート接続ポートを設定するサーバー上の docker.service ファイルを...

HTML+CSS+JS でキャンバスがマウスの小さな円に追従する特殊効果のソースコードを実現

効果(ソースコードは最後にあります): 成し遂げる: 1. タグを定義します。 <h1>...

Mysql のデッドロックの表示とデッドロックの除去の詳細な説明

序文しばらく前にMysqlのデッドロック問題に遭遇したので、解決しました。問題の説明: Mysql ...

mysql explain(分析インデックス)の使い方の詳しい説明

EXPLAIN は、MySQL がインデックスを使用して選択ステートメントを処理し、テーブルを結合す...

CSS でホバー ドロップダウン メニューを実装する方法

いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...

Vue が DingTalk の出勤カレンダーを実装

この記事では、DingTalkの勤怠カレンダーを実装するためのVueの具体的なコードを参考までに共有...

MySQL はどのようにしてデータベースの削除と暴走を効果的に防ぐことができますか?

目次セーフモード設定テスト1. where句なしで更新および削除する2. 非インデックスキーの削除3...

プレーンな JS オブジェクトの代わりに Map を使用する場合

目次1. マップは任意のタイプのキーを受け入れます2. マップにはキー名に関する制限はありません3....

Ubuntu 18.04.4 に MySQL をインストールするプロセスの詳細な説明

Ubuntu 18.04.4 に MySQL をインストールするプロセスを見てみましょう。内容は次の...

dockerでrabbitmqをインストールすると管理ページに入れなくなる問題

1. 環境整備Tencent Cloud Server CENTOS 7 バージョンDockerコン...

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

Code Cloudで新しいプロジェクトtest1を作成します。 公開鍵を取得するには次のコマンドを...