Rechercher dans une liste à virgules (BLOB)
Posté par CERDAN Yohann dans
En MySQL ou en typo3 plus particulièrement, on retrouve souvent des champs de tables MySQL qui contiennent des valeurs séparées par des virgules.
Par exemple, dans la table « fe_users », on décrit les groupes d’un utilisateur en listant les IDs des groupes. On peut alors avoir des valeurs du style « 3,39,189″. Comment savoir si cet utilisateur fait partie du groupe d’ID 189 ? Il y a en gros 3 manières distincte de fonctionner :
- Utiliser une expression régulière avec un WHERE usergroup REGEXP ‘,?xx,?’. Une solution assez médiocre ou alors il faut se munir d’un pattern qui couvre tous les cas possibles.
- Utiliser un IN comme cela : SELECT * FROM fe_users WHERE usergroup IN (189). Cela peut être une solution envisageable mais parfois on a un comportement bizarre. Voir ce billet pour une démonstration.
- Utiliser une la fonction MySQL FIND_IN_SET qui répond à notre problématique et qui est de plus optimisée pour cela. Elle s’utilise de la manière suivante : SELECT * FROM fe_users WHERE FIND_IN_SET(’189′,usergeoup)
Article(s) sur le même sujet :
- Caster un type BLOB ou autre en CHAR
- Rechercher/Remplacer en MySQL et LINUX
- Repérer les doublons dans une table
Aucun trackback pour l'instant
26 janvier 2010 - 14 h 55 min
Tags: MySQL, PHP, TYPO3
Posté dans MySQL, PHP, TYPO3 | Aucun commentaire
Juste un petit billet rapide pour vous informer d’une nouvelle section appelée « ressources ». Dans celle-ci, vous y retrouverez pas mal d’éléments (essentiellement des liens) essentiels à un développeur TYPO3 (ou plus généralement PHP). On pourra par exemple y retrouver un lien vers les « must have » de la documentation TYPO3. Je vais essayer au maximum de [...]
11 juillet 2009 - 8 h 26 min
Tags: Linux, MySQL
Posté dans Linux, MySQL | 2 commentaires
Ayant récemment eu besoin de mettre au point une routine générique permettant de recherche/remplacer une expression dans des fichiers et en base de données, je me permet quelques petits rappels (ca peut toujours servir). Rechercher/remplacer dans un fichier Rechercher/remplacer dans tous fichiers en partant du répertoire courant Rechercher/remplacer dans une base MySQL à l’aide d’une [...]
13 mars 2009 - 7 h 12 min
Tags: Linux, MySQL
Posté dans Linux, MySQL | Aucun commentaire
Lors de la confection de scripts SH, il m’est souvent arrivé de me poser la question suivante : « Comment récupérer la taille d’une base sans passer par PHP ou directement par la taille physique? » (bon ok, je suis un peu tordu ). Pour cela, voici la démarche à adopter : Je m’en sers spécialement pour [...]
4 mars 2009 - 7 h 58 min
Tags: MySQL
Posté dans MySQL | Aucun commentaire
Ayant l’habitude d’effectuer pas mal de chose en ligne de commande, le requêtage direct dans une console peut être très pratique. Certains on l’habitude de faire quelque chose du style: Mais l’ajout du -e peut être très pratique et permet d’exécuter une requête directement (pratique pour des scripts automatiques). Partager : Tweet Article(s) sur le [...]
24 février 2009 - 7 h 47 min
Tags: MySQL
Posté dans MySQL, TYPO3 | Aucun commentaire
Typo3 stocke certains champs important avec le type BLOB. Il peut parfois être intéressant d’en voir le contenu, puisque par défaut, si vous essayez d’afficher un BLOB sous phpmyadmin, vous n’aurez rien. Il m’est arrivé d’avoir dans une extension un chemin vers un fichier dans un type BLOB et je voulais consulter ces chemins en [...]
17 février 2009 - 7 h 07 min
Tags: MySQL
Posté dans MySQL | Aucun commentaire
Voici une requête pratique à adapter selon vos besoin. Elle vous ressort les doublons dans une table (ça peut vraiment servir des fois). Partager : Tweet Article(s) sur le même sujet : Rechercher dans une liste à virgules (BLOB) Rechercher/Remplacer en MySQL et LINUX
22 janvier 2009 - 7 h 39 min
Tags: Linux, MySQL
Posté dans Linux, MySQL | Aucun commentaire
Rendez-vous en mode console sur votre site. Sauvegarder la base mysql mysqldump -h$typo_db_host -u$typo_db_username -p$typo_db_password –skip-lock-tables $typo_db > nom_du_fichier.sql $typo_db_host // host mysql $typo_db_username // user mysql avec les droits suffisant $typo_db_password // mot de passe associé au compte $typo_db // nom de la base de données Restaurer la base mysql mysql -h$typo_db_host -u$typo_db_username -p$typo_db_password [...]
10 janvier 2012 - 21 h 44 min
Bonjour,
Merci beaucoup pour cette solution que je vais utiliser dans mon Dév.
Cordialement ,