Après avoir parlé un peu de la recherche en MySQL via [LIKE|/post/2009/mysql-et-la-recherche-avec-like] puis [REGEXP|/post/2009/mysql-et-la-recherche-avec-regexp], et avant d’aller plus loin, parlons un peu de la recherche dans plusieurs champs à la fois. Eh oui, c’est possible grâce à CONCAT, ou plutôt CONCAT_WS. Prenons une table contenant les billets d’un blog, et donc possédant les champs @@id@@, @@titre@@ et @@contenu@@. Une recherche classique cherchera un mot clef dans le titre et dans le contenu du billet. Pour cela, on pourrait utiliser @@OR@@, mais un @@CONCAT@@ qui concatène (met l’un à la suite de l’autre) le contenu de @@titre@@ et de @@contenu@@, c’est pas mal aussi. /// SELECT * FROM billet WHERE CONCAT(titre, contenu) LIKE « %mot%clef% »; /// On peut ainsi concaténer autant de champs que l’on souhaite. Un petit détails cependant, si l’un de ces champs est NULL, le résultat renvoyé est NULL. Pour éviter cela, il convient d’utiliser @@CONCAT_WS@@ qui fonctionne de la même manière, sans se soucier des champs vides. /// SELECT * FROM billet WHERE CONCAT_WS(date, ‘ ‘, heure, ‘h’, minute) LIKE « 10/11/2009 23h30″; /// Ce deuxième exemple est certes moins compréhensible, mais explique bien l’intérêt d’utiliser @@CONCAT@@ plutôt que @@OR@@ dans certains cas. %%% Bien sûr, ceci fonctionne aussi très bien avec la commande @@REGEXP@@ ! Bref, vive la concaténation ! %%% %%% Puisque ses rétroliens ne semblent pas fonctionner, merci à CrazyCat de [G33k-zone|http://www.g33k-zone.org/post/2009/09/18/Concat%C3%A9nation-de-champs-avec-MySQL] pour m’avoir fait découvrir cette commande SQL bien utile.
Catégories
- Apache (6)
- Avent (14)
- C / C++ (5)
- CMS (16)
- Geekeries (41)
- HTML et CSS (6)
- Informations (12)
- Java (26)
- Javascript (8)
- L'anecdote du week-end (4)
- PHP (30)
- PHP objet (20)
- Projets (4)
- Référencement (4)
- SQL (9)
- XML (3)
- XMPP (4)
Tags
30 minutes Android Anecdote Ant Apache attribut C class CMS constructeur CSS date design Dotclear Eclipse erreur Expression Google Java Javascript Joomla jQuery Ligne de commande Linux Maven MySQL méthode PgSQL PHP POO Projet public regex Référencement SEO Shell SQL ssh tutoriel Url Rewriting Wallpaper Windows Wordpress XHTML XML
Tiens, mes rétro-liens ne marchent pas ? aurais-je loupé un épisode dans la configuration de dotclear ? Ils sont pourtant activés et non modérés.
Mais je ne suis pas bien doué avec les blogs moi…
Désolé, ceci n’est pas du flood mais une petite réponse à mon commentaire précédent:
un antispam activé par défaut dans dotclear bloque les trackbacks si le billet ne contient pas un lien vers le billet initial.
J’ai donc désactivé cette protection car il me semble que la réécriture d’url provoque d’étranges comportements dans la vérification.
CrazyCat > Du coup, j’ai bien remis le rétrolien, merci ! Et merci pour ton billet, ça m’a déjà bien servi.
J’avais déjà lu quelque chose au sujet de l’antispam en question, et ça explique que beaucoup de rétroliens ne sont pas accessibles. Enfin, pour ma part, je n’ai pas encore trouvé où le désactiver.