ホームページ >バックエンド開発 >PHPチュートリアル >カンマ区切り値を含むデータベース列を効率的にクエリするにはどうすればよいですか?

カンマ区切り値を含むデータベース列を効率的にクエリするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-30 21:44:10779ブラウズ

How Can I Efficiently Query a Database Column Containing Comma-Separated Values?

単一列に複数の値を持つクエリの処理

このシナリオでは、「children」という名前の列を持つテーブルが登場します。カンマ区切りの名前。目的は、この列内に指定された子、たとえば「Alex」が存在するレコードを取得することです。

ただし、名前が複数あるため、単純な等価性チェック (例: "WHERE Children = 'Alex'") を使用すると失敗します。それぞれの細胞に存在します。基本的な LIKE 検索 (「WHERE Children LIKE '%Alex%'」) は、部分一致 (例: 「Alexandre」 または 「Diana」) による誤検知につながります。

この課題に対処するための最適なアプローチは次のとおりです。子と親の関係を保存する別のテーブルを導入することでデータ構造を正規化する必要があります。これにより、効率的に結合を実行し、必要な情報を取得できるようになります。

それでも、正規化が不可能な場合は、FIND_IN_SET 関数を使用した解決策が提示されます。

この関数は、以下を検索します。列値内の指定された文字列を返し、その文字列が存在する場合は正の数値を返します。この条件を WHERE 句に組み込むことで、「Alex」の子がリストされている行を識別できます。

以上がカンマ区切り値を含むデータベース列を効率的にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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