MySQL のカンマ区切りフィールド内の検索
MySQL では、データがカンマ区切り形式で保存される特定のシナリオが発生する場合があります。 、それを避けるように推奨されている実践にもかかわらず。このため、そのようなフィールド内で正確な検索を実行しようとすると課題が生じます。次の例を考えてみましょう。
テーブルには、カンマ区切りのリストとして保存された別のテーブルの値を持つフィールドが含まれています。
12,13,14,16
当面のタスクは、この中で特定の値を検索することです。
SELECT ... WHERE field LIKE '%1%'
のようなクエリを使用したフィールド。ただし、データの性質上、最も一般的な ID は狭い範囲内にあるため、このようなクエリはほぼすべてのエントリに一致します。
この問題に対処するには、より具体的な検索が必要です。 %1% を使用する代わりに、LIKE 条件内で %,1,% を使用することを検討してください。これは、前後にカンマが続く 1 を含む値と一致します。
残念ながら、この方法では、カンマ区切りリストの最初と最後の値には制限があります。これらの値はパターンと一致しないためです。
したがって、別のアプローチが必要です。 MySQL は、FIND_IN_SET と呼ばれる強力な関数を提供します。この関数を使用すると、カンマ区切りリスト内で検索できます。
SELECT ... WHERE FIND_IN_SET('1', field)
FIND_IN_SET を使用すると、カンマ区切りリスト内の指定された値の位置が返されます。値が存在しません。これにより、理想的でないデータ構造でも正確かつ効率的な検索が可能になります。
以上がMySQL のカンマ区切りフィールドで特定の値を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。