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を組み合わせたプロジェクト開発の実践記録

推薦する

Element-ui アップロードファイルのアップロード制限の解決策

質問アップロードするファイルのタイプを accept に追加することは、「表面的な」役割しか果たしま...

Echart Bar の 2 列チャート スタイルの最も完全な詳細な説明

目次序文インストールと設定1. Echartsをインストールする2. Echartsをグローバルに導...

dockerプライベート倉庫の構築と利用の詳細説明

1. リポジトリイメージをダウンロードする docker プルレジストリ 2. プライベートウェアハ...

MySQLの共同クエリ最適化メカニズムの詳細な説明

目次MySQL フェデレーテッド クエリ実行戦略。実行計画フェデレーテッドクエリオプティマイザーMy...

MySQL count(1)、count(*)、count(field)の違い

目次1. COUNTの初見2. COUNT(フィールド)、COUNT(定数)、COUNT(*)の違い...

MySQLデータベースがNULLを可能な限り避ける理由

MySQL の多くのテーブルには、NULL が列のデフォルト属性であるため、アプリケーションが NU...

JavaScript が Jingdong の虫眼鏡効果を模倣

この記事では、Jingdongの虫眼鏡効果を実現するためのJavaScriptの具体的なコードを紹介...

MySQL 5.x 以降を使用している場合のエラー #1929 列 ''createtime'' の日付時刻値が正しくありません: '''' の簡単な解決方法

MySQL をインストールした後、テーブル データを保存および削除しようとすると、常にエラー メッセ...

Linuxシステムの操作レベルの詳細な紹介

目次1. Linuxシステムの操作レベルの概要2. 実行レベルを確認する3. 現在のシステムの動作レ...

Ubuntu で XFS ファイルシステム用の LVM を作成する方法

序文lvm (論理ボリューム マネージャー) 論理ボリューム管理は、Linux システムのニーズを満...

チェックボックスの不確定プロパティの使用の紹介

Windows XP でフォルダーのプロパティ ダイアログ ボックスを使用すると、フォルダーの属性カ...

npm グローバル モジュールのデフォルトのインストール パスを変更するためにノードのインストールをカスタマイズする手順

node を D ドライブにインストールしましたが、C ドライブのスペースを占有したくなかったため、...

React プロジェクトにおける TypeScript の使用の概要

序文この記事では、TS の基本的な概念ではなく、プロジェクトで TypeScript (以下、TS ...

rpm を使用して指定されたバージョンの docker (1.12.6) をインストールする詳細な手順

1. 理由システムが Centos7.3 の場合、yum install docker を使用して直...

Tomcat マルチインスタンスの展開と構成の原則

1. ファイアウォールをオフにし、Tomcatのインストールに必要なソフトウェアパッケージを/opt...