Concaténation de colonnes dans MySQL WHERE Clause
Dans une table de base de données avec des colonnes pour les prénoms et les noms, effectuer une requête de recherche avec un seul Le terme de recherche peut être difficile. La recherche dans chaque colonne séparément à l'aide de l'opérateur LIKE peut donner des résultats généraux, en particulier lorsque des termes de recherche à un seul mot sont utilisés.
Pour affiner les résultats de la recherche, vous pouvez utiliser la fonction CONCAT() pour concaténer le premier et le dernier. noms dans une seule chaîne. Cette chaîne peut ensuite être comparée au terme recherché à l'aide de l'opérateur LIKE. Cependant, l'exemple de requête fourni dans la question :
select * from table where first_name like '%$search_term%' or last_name like '%$search_term%' or concat_ws(' ',first_name,last_name) like '%$search_term%';
ne semble pas donner les résultats souhaités.
Une version simplifiée de la requête, comme suggéré dans la réponse :
select * from table where concat_ws(' ',first_name,last_name) like '%$search_term%';
devrait atteindre l'objectif de rechercher le nom complet en une seule requête. La fonction CONCAT() combine le prénom et le nom en une seule chaîne, qui est ensuite comparée au terme recherché à l'aide de l'opérateur LIKE. Cette approche devrait fournir des résultats de recherche plus précis.
Pour résoudre les problèmes liés à la requête d'origine, il serait utile de fournir un exemple de nom et de terme de recherche qui ne fonctionne pas comme prévu. Il se peut que le problème réside ailleurs dans la requête ou dans les données de la table.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!