Bonsoir,
Voici mon problème :
J'ai une base de données avec une table "users".
Cette table contient un champ texte "parking" qui contient une série de nombres séparés par des virgules : 12,5,165,78,1,51...
Ces nombres sont uniques (ce sont des id). Parce que l'utilisation et la gestion de cette liste était simple (à la base), nous avons opté pour un champ plutot qu'une table associative.
Bref, je recherche une solution me permettant de "balayer" la table "users" et de retirer un nombre en particulier de tous les champs parking.
Par exemple : je voudrais retirer tous les nombres "165"
J'ai cependant quelques contraintes :
- Je pourrais évidemment lire chaque enregistrement de la table, rechercher si le champ "parking" contient le nombre, le supprimer et faire un UPDATE => cela me semble plus que particulièrement lourd sachant que la table pourrait contenir plusieurs milliers de lignes.
- Je dois faire attention à supprimer un nombre en entier et pas une partie d'un autre. Ex: si je supprimer le nombre "1", je ne dois pas enlever le chiffre "1" des nombres "12", "165" et "51" de l'exemple ci-dessus.
- Le champ peut contenir de 0 à n nombre (heureusement donc, tous différents). De fait, si on passe par une regexp, elle doit prendre en compte que le nombre peut être seul, en premier, au millieu, en dernier ou ne pas y être.
- il faut essayer d'optimiser le temps de traitement
A la limite, même si elle est un peu barbare, je dois pouvoir m'en sortir avec la regexp (enfin j'éspère) mais je ne vois pas du tout comment traiter ce pb.
Merci de votre aide.
Partager