ホームページ データベース mysql チュートリアル SQL クエリ フィールドがステートメントに含まれる問題について話す

SQL クエリ フィールドがステートメントに含まれる問題について話す

Aug 11, 2017 pm 03:08 PM
含む 分野 声明

SQL ファジー クエリと言えば、最初に思い浮かぶのは like キーワードでしょう。特定のフィールドを含むデータをクエリする必要がある場合、多くの場合、「%keyword%」クエリ メソッドを使用します。具体的なコード例については、この記事を参照してください

前書き

SQL のあいまいクエリに関して言えば、最初に思い浮かぶのは like キーワードでしょう。

特定のフィールドを含むデータをクエリする必要がある場合、多くの場合、「%keyword%」クエリ メソッドを使用します。例:


SELECT ... FROM 表名 WHERE 字段名 LIKE '%关键字%'
ログイン後にコピー

これは典型的な「XXX を含む」メソッドとみなされますが、フィールドに特定の文字を含むデータをクエリする必要がある場合はどうすればよいでしょうか?

たとえば、連絡先データ テーブル ConnectName があり、名前を記録するフィールドがあります。 Xiaolan と Haiyuan という名前の人の連絡先を知りたいです。通常の状況では、まず次のことが考えられます:


SELECT * FROM ConnectName 
WHERE
  name = '小兰'
  OR name = '灰原'
ログイン後にコピー

このアプローチはこの目的を達成できます。このとき、突然「コナン」などの別の人物をチェックしたい場合は、SQL 構造を変更して Where 条件文を追加する必要があります:


SELECT * FROM ConnectName 
WHERE
  name = '小兰'
  OR name = '灰原'
  OR name = '柯南'
ログイン後にコピー

OR 条件クエリ自体が効率的であることがわかっています。下位の構造的に変化するステートメントは、MyBatis で実装するのが少し面倒です (もちろん、フィールドを走査して挿入するだけで実装できます)。

もっとシンプルにできないでしょうか?すべてのキーワードをまとめて、Where 条件を 1 つだけ使用してそれを達成できますか?

CHARINDEX が登場します

この時点で、CHARINDEX キーワードを使用して、テキスト文字列内の特定のフィールドが表示される位置を返すことができます。さらにお楽しみに、栗を取り出します:


CHARINDEX('李白','曹操很帅') =0
ログイン後にコピー

上の栗では、曹操は非常にハンサムであるため、李白キーワードが含まれていないため、見つからず、0 が返されます


CHARINDEX('李白','李白很帅') =1
ログイン後にコピー

同じ栗には Li Bai キーワードが含まれているため、キーワードの先頭の最初の単語のインデックスが返されるため、1 が返されます。

使い方を理解した後、CHARINDEX キーワードを使用して最適化できます。 SQL ステートメント:


SELECT * FROM ConnectName 
WHERE
  CHARINDEX(name ,'小兰灰原柯南')>0
ログイン後にコピー

名前フィールドに対応する名前が「Conan Xiaolan Haibara」に表示される場合、CHARINDEX 関数は 1 より大きい値を返し、必要なデータを取得できます (これら 3 つを使用することもできます)一緒に楽しく遊んでください^-^)

対応するmybatisの実装も比較的簡単です


SELECT * FROM ConnectName 
WHERE
  <!--[CDATA[ AND CHARINDEX(name ,#{传入的参数}) --> 0 ]]>
ログイン後にコピー

毛利小五郎など、後で新しい人物を追加したい場合は、「小蘭灰原コナン毛利小五郎」を追加するだけです。受信パラメータのほうがはるかに簡単ではないでしょうか。

以上がSQL クエリ フィールドがステートメントに含まれる問題について話すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP でフィールドが空かどうかを確認するにはどうすればよいですか? PHP でフィールドが空かどうかを確認するにはどうすればよいですか? Mar 20, 2024 pm 03:09 PM

PHP は Web サイト開発で広く使用されているスクリプト言語であり、開発者にとって、フィールドが空かどうかを判断する必要があることがよくあります。 PHP では、フィールドが空かどうかをいくつかの簡単な方法で判断できます。この記事では、PHP でフィールドが空かどうかを判断する方法を紹介し、参考として具体的なコード例を示します。 PHP では、通常、empty() 関数または isset() 関数を使用して、フィールドが空かどうかを判断できます。次に、これら 2 つの機能の使い方をそれぞれ紹介します。 empty() 関数を使用する

Java の NoSuchFieldError - フィールドが見つからない場合の解決策 Java の NoSuchFieldError - フィールドが見つからない場合の解決策 Jun 25, 2023 am 11:33 AM

Java の NoSuchFieldError - フィールドが見つからない場合の解決策 Java は、エンタープライズ レベルのアプリケーションや大規模なデータ処理で広く使用されている高水準プログラミング言語です。 Javaの開発過程では、NoSuchFieldErrorなどのエラーが発生することがあります。このエラーは、JVM が実行時に必要なフィールドを見つけられないことを意味します。この記事では、NoSuchFieldError とその解決方法について詳しく説明します。 NoSuchFieldEとは何ですか

jQueryを導入するために必要なパッケージは何ですか? jQueryを導入するために必要なパッケージは何ですか? Feb 23, 2024 pm 12:00 PM

jQuery は、JavaScript プログラミングを簡素化するためのシンプルかつ強力な関数を提供するよく知られた JavaScript ライブラリです。 Web プロジェクトに jQuery を導入するときは、次のコードを HTML ファイルに追加して、必要なパッケージを導入する必要があります。 My Web ページ

mysqlフィールドとはどういう意味ですか? mysqlフィールドとはどういう意味ですか? Jul 10, 2023 pm 02:14 PM

mysql フィールドは、データを保存するために使用される、mysql データベース テーブル内の特定のタイプと長さの列です。 MySQL では、各フィールドに特定のデータ型が必要です。一般的なデータ型には、整数、浮動小数点数、文字列、日付、時刻が含まれます。これらのデータ型によって、MySQL が各フィールドに格納できるデータが決まります。

PHP8.0のmulti-catch文 PHP8.0のmulti-catch文 May 14, 2023 pm 01:51 PM

Web アプリケーションの開発に伴い、PHP 言語は Web 開発で広く使用されています。 PHP8.0 バージョンでは、新しい言語機能である multi-catch ステートメントが導入されました。マルチキャッチステートメントとは何ですか?以前の PHP バージョンでは、開発者は複数の例外タイプを処理するために複数の catch ステートメントを作成する必要がありました。たとえば、次のコード ブロックは 2 つの異なる例外の処理を示しています。

JavaScript を使用して文字列に特定の文字が含まれているかどうかを確認するにはどうすればよいですか? JavaScript を使用して文字列に特定の文字が含まれているかどうかを確認するにはどうすればよいですか? Oct 21, 2023 am 08:23 AM

JavaScript を使用して文字列に特定の文字が含まれているかどうかを確認するにはどうすればよいですか? JavaScript では、いくつかの方法を使用して、文字列に特定の文字が含まれているかどうかを判断できます。一般的に使用される 3 つのメソッドを以下に紹介し、対応するコード例を示します。方法 1: IndexOf() メソッドを使用する 文字列の IndexOf() メソッドを使用して、文字列に指定した文字が含まれているかどうかを確認できます。文字列内で最初に出現した特定の文字のインデックスを返します。

データベーステーブルにフィールドを追加する方法 データベーステーブルにフィールドを追加する方法 Mar 18, 2021 pm 02:13 PM

テーブルにフィールドを追加する方法: 1. "ALTER TABLE table name ADD new field name data type;" ステートメントを使用して最後にフィールドを追加します。 2. "ALTER TABLE table name ADD new field name data type FIRST;" ステートメントを使用します。 " ステートメントを使用して先頭に追加します。 Field; 3. "ALTER TABLE テーブル名 ADD 新しいフィールド名のデータ型 [制約] AFTER 既存のフィールド名;" ステートメントを使用して、途中にフィールドを追加します。

MySQLにデータを挿入するステートメントを実装するにはどうすればよいですか? MySQLにデータを挿入するステートメントを実装するにはどうすればよいですか? Nov 08, 2023 am 11:48 AM

MySQLにデータを挿入するステートメントを実装するにはどうすればよいですか? MySQL データベースを使用する場合、データの挿入は非常に基本的で一般的な操作です。データを挿入することにより、新しいレコードをデータベース テーブルに追加して、業務運営をサポートできます。この記事では、MySQL で INSERT ステートメントを使用してデータ挿入操作を実装する方法を紹介し、具体的なコード例を示します。 MySQL の INSERT ステートメントは、データベース テーブルに新しいレコードを挿入するために使用されます。基本的な構文形式は次のとおりです。 INSERTINTOt

See all articles