WHERE 句での MySQL フィールドの連結: 検索の曖昧性の解決
目的は、ユーザーが検索したときにより具体的な結果を返すように検索クエリを改良することです。検索語としてフルネームを入力します。現在、クエリでは名と姓の両方の列が個別に検索されるため、検索語が含まれる名前が 1 つだけの場合でも一致します。
これに対処するために、WHERE 句内で concat_ws() 関数を使用しようとしました。姓と名フィールドを連結します。ただし、これを 3 番目の OR 条件として追加するという最初のアプローチは成功しませんでした。
ただし、後で発見したように、(個々のフィールドなどを確認した後) クエリの最後の句として concat_ws() 関数を実行すると、データ)により問題が解決されました。これは、クエリ内の関数の実行順序がその有効性に影響を与える場合があることを示唆しています。
Robert Gamble が提供する簡素化されたクエリでは、望ましい結果が得られます。
select * from table where concat_ws(' ',first_name,last_name) like '%$search_term%';
このクエリは、最初のクエリを効果的に連結します。および姓フィールド。結合された文字列を 1 つの検索値として扱います。 LIKE 演算子をワイルドカード文字とともに使用すると、連結された名前内の任意の場所に検索語が出現するレコードのみが返されます。
このアプローチにより、より正確な検索結果が得られ、最初と最初の両方の場合にのみ一致が返されることが保証されます。姓に検索語が含まれるため、個々のフィールドからの部分一致の問題が排除されます。
以上がMySQL の「WHERE」句で「CONCAT_WS()」を使用する場合の検索のあいまいさを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。