Concaténation de champs avec MySQL
Par CrazyCat le 18/09/2009, 13:46 - MySQL - Lien permanent
Petite surprise en développant une requête qui fait la recherche d'un mot dans trois champs concaténés, elle ne retourne aucun résultat or le mot est bien présent dans l'un des champs. La requête est de la forme:
SELECT * FROM table WHERE CONCAT(champ1, champ2, champ3) LIKE '%mot%'
Après un petit tour dans la documentation MySQL, voici ce que l'on trouve:
CONCAT(str1,str2,...) Retourne une chaîne représentant la concaténation des arguments. Retourne NULL si un des arguments est NULL. Cette fonction peut prendre plus de 2 arguments. Si un argument est un nombre, il sera converti en son équivalent sous forme de chaîne de caractères
Pour une concaténation de champs dont certains peuvent avoir la valeur NULL, il faut employer CONCAT_WS():
SELECT * FROM table WHERE CONCAT_WS(' ', champ1, champ2, champ3) LIKE '%mot%'
Commentaires
sympa je connaissait pas ce mot clé, ça pourra m'être bien utile :)
J'espère qu'il le sera autant pour toi qu'il l'a été pour moi.
Bonjour
Juste une question , je souhaite plusieurs mots cles dans ma recherche
j utilise PDO et requetes preparees
Je peux faire un explode de mon champs de recherche explode(" ", $mot_cle) et LIKE CONCAT_WS de mes variables ?
Merci