Requête tri champ alphanumérique dans table

Résolu/Fermé
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014 - 8 août 2007 à 11:27
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014 - 8 août 2007 à 12:01
Bonjour,

Je souhaite faire une requête mysql qui fasse un count dans une colone , en ne sélectionnant que les éléments contenant 3 lettres et 6 chiffres.
table:
| ID | champ1    | ...
|  1 | toto      | ...
|  2 | tata01    | ...
|  3 | VOI600720 | ...
|  4 | CHY700621 | ...
...

Donc en fait, comme résultat, il devrait me donner "2" pour l'exemple.

Je pensais faire quelque chose comme:
SELECT COUNT(*) FROM table WHERE champ1 LIKE '[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]'

Mais cela ne marche pas!

Pouvez-vous m'aider?

4 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 007
8 août 2007 à 11:51
C'est exactement ce que tu as mis, mais en remplaçant LIKE par REGEXP. A un détail près, dans ton expression tu ne précises pas que les trois premières lettres doivent être au début de la chaine et les 6 chiffres à la fin, ce que l'on corrige en rajoutant ^ et $
SELECT COUNT(*) FROM table WHERE champ1 REGEXP '^[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]$'

Tu peux aussi la raccourcir en utilisant les itérations :
SELECT COUNT(*) FROM table WHERE champ1 REGEXP '^[A-Z]{3}[0-9]{6}$'

A noter que tu te limites aux lettres majuscules. Pour étendre aux minuscules, il faut mettre [a-zA-Z] au lieu de [A-Z].

Xavier
1
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 007
8 août 2007 à 11:36
Bonjour,

Les expressions rationnelles, en mysql, ne s'utilisent pas directement, il faut préciser que tu en utilise en utilisant REGEXP.
Voilà la doc officielle : https://dev.mysql.com/doc/refman/8.0/en/regexp.html

Xavier
0
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014
8 août 2007 à 11:44
Peux-tu me préciser la marche à suivre?
J'ai du mal a comprendre comment fonction REGEXP

Je dois le définir au préalable ou seulement dans la requête?

Peut-tu me donner un exemple de requete alphanmérique avec REGEXP?

Merci
0
naokylon Messages postés 90 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 avril 2014
8 août 2007 à 12:01
Merci

Parfait, c'est exactement ce que je cherchais!
Merci!
0