Article(s) taggés avec ‘MySQL’

Traiter des données accentuées sauvées en HTML dans MySQL

lundi 8 avril 2013

Sauver ses données en HTML peut s’avérer très intéressant sous divers aspects (que je vous laisserai le soin de juger) mais cela pour nous rendre la vie dure.
Par exemple lorsque l’on souhaite s’appuyer sur MySQL pour faire des recherches de correspondances de textes accentués.

En effet, alors que la clause

  1. span class= »st0″>’%ecole%’

fonctionnera pour la valeur « école« , il n’en sera rien pour la valeur « école« .

La solution trouvée sur les forums de MySQL consiste à créer une fonction MySQL personnalisée en ajoutant « une procédure stockée » à votre base de données.

Une fois le code copié/collé (et adapté à votre configuration) dans votre base, vous n’aurez plus qu’à modifier votre clause en

  1. span class= »st0″>’%ecole%’

pour pouvoir sélectionner les entrées ayant un champ `data contenant le mot « école », « école », « ecole », « écòle », …

Les expressions régulières en MySQL

samedi 18 août 2012

Et oui, vous avez bien lu! Les expressions régulières ne sont pas que dans le PHP, et le réécriture d’URL à la volée (via nos précieux .htaccess)/

Ce n’est pas quelque chose que j’ai coutume de faire mais parfois, lors de migrations de données, on souhaite filtrer plus précisément les données à traiter.

Par exemple, sélectionner les entrées dont la référence commence par 3 lettres:

  1. span class= »st0″>’^([A-Z]{3})’

Ou fini par 1 chiffre et un code à 2 lettres précis:

  1. span class= »st0″>'([1-9]{1})(GF|MF)$’

Pour ceux qui sont frileux avec les expressions régulières, je vous conseille ce très bon site francophone sur le sujet: http://www.expreg.com/mysql.php

Insérer des entrées provenant d’une sous-requête MySQL

mardi 10 juillet 2012

Dans une phase de développement d’un outil, nous pouvons être amenés à copier des données d’une table de notre base de données à une autre pour mieux scindez nos données ou au contraire les regrouper.
Dans ce cas, notre cerveau, formaté à réfléchir en PHP pour intéragir avec MySQL, va nous pousser à écrire quelques lignes pour:

  • récupérer les données à traiter (1 requête),
  • puis, pour chacune de ces données, les insérer dans le nouvelle table (n requêtes)

Pour un déménagement de n entrées, on aura donc n+1 requêtes MySQL à lancer.

Que diriez-vous de n’en lancer qu’une seule et, cerise sur la gâteau, de ne pas avoir à coder une seule ligne PHP?

Jugez plutôt:

  1. span class= »st0″>’blabla’)

Rien ne vous empêche évidemment d’avoir une sous-requête peu plus complexe qui prend les entrées avec l’id le plus bas parmi les doublons d’une série répondant à une certaine conditions pour insérer dans une table avec ‘valeur_commune’ à toutes les nouvelles entrées et en y indiquant le timestamp Unix actuel.

  1. span class= »st0″>’valeur_commune’‘remplie’

Merci à Rob Searles pour son article qui m’a fait découvrir cette « technique »