ホームページ >データベース >mysql チュートリアル >SQL の単一フィールド内の複数の値を効率的に検索するにはどうすればよいですか?
SQL で同じフィールド内の複数の値を検索する方法
検索アルゴリズムを構築するとき、多くの場合、文字列を分割する必要があります。構成部品に分割し、各部品を個別に検索します。これは、スペースで区切られた検索語を扱う場合に特に便利です。
SQL でこれを実現するには、ワイルドカードを含む LIKE 演算子を使用して、各検索語の前後の文字と一致させることを検討できます。ただし、このアプローチは複数の LIKE 句が必要であり、パフォーマンスの問題が発生する可能性があるため、あまり効率的ではありません。
代わりに、より効果的な解決策は IN 演算子を使用することです。 IN 演算子を使用すると、リストで指定された値のいずれかに一致する値を検索できます。たとえば、次のクエリは、名前に「Sony」または「TV」のいずれかを含む製品を検索します。
SELECT name FROM Products WHERE name IN ('Sony', 'TV');
スペースで区切られた複数の値を検索するには、文字列を配列に分割して次を使用します。 IN 演算子は次のようになります:
$search = "Sony TV with FullHD support"; $search = explode(' ', $search); SELECT name FROM Products WHERE name IN ( $search[0], $search[1], ... );
代わりに、以下に示すように OR を LIKE 演算子とともに使用することもできます:
SELECT name FROM Products WHERE name LIKE '%$search[0]%' OR name LIKE '%$search[1]%' OR ...;
ただし、OR を使用するには次の条件が必要であることに注意することが重要です。少なくとも 1 つの条件が true である必要がありますが、AND ではすべての条件が true である必要があります。
以上がSQL の単一フィールド内の複数の値を効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。