Mysql faire un order by sur une partie d'un champ [RESOLU]
4 messages
• Page 1 sur 1
- axis1
- Nouveau WRInaute

- Messages: 7
- Inscription: 30 Jan 2005
Mysql faire un order by sur une partie d'un champ [RESOLU]
bonjour,
je cherche à trier des résultats d'une requête mysql sur une partie d'un champ.
ce champ contient de 1 à 4 chiffres, puis un - et 1 ou deux lettres.
je voudrais faire le tri sur un ordre croissant des chiffres à gauche du tiret.
j'ai essayé Order By 'Nom du CHAMP' RegexP '^[0-9]{1,4}' asc
mais cela ne donne rien.
je peux éventuellement faire un tableau avec les différentes valeurs de ces chiffres et demander l'order by sur les valeurs de ce tableau mais je ne connais pas la syntaxe et reste confronté à l'élimination de la partie à droite du tiret
merci de votre aide
patrice
je cherche à trier des résultats d'une requête mysql sur une partie d'un champ.
ce champ contient de 1 à 4 chiffres, puis un - et 1 ou deux lettres.
je voudrais faire le tri sur un ordre croissant des chiffres à gauche du tiret.
j'ai essayé Order By 'Nom du CHAMP' RegexP '^[0-9]{1,4}' asc
mais cela ne donne rien.
je peux éventuellement faire un tableau avec les différentes valeurs de ces chiffres et demander l'order by sur les valeurs de ce tableau mais je ne connais pas la syntaxe et reste confronté à l'élimination de la partie à droite du tiret
merci de votre aide
patrice
Dernière édition par axis1 le Sam Déc 27, 2008 21:38, édité 1 fois.
-

Marie-Aude - Modérateur

- Messages: 11889
- Inscription: 5 Juin 2006
Tu rajoutes dans ta requete un champ calculé qui contient la partie sur laquelle tu veux trier, et tu fais l'order by sur celui là
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Mysql faire un order by sur une partie d'un champ
axis1 a écrit:je cherche à trier des résultats d'une requête mysql sur une partie d'un champ.
ce champ contient de 1 à 4 chiffres, puis un - et 1 ou deux lettres.
Donc ton champ est de type texte (varchar ou autre du même genre).
axis1 a écrit:je voudrais faire le tri sur un ordre croissant des chiffres à gauche du tiret.
Je suppose que tu veux un tri numérique, i.e. 9 est plus petit que 10, alors qu'à l'heure actuelle il te fait un tri alphanumérique (9 est plus grand que 10)?
axis1 a écrit:j'ai essayé Order By 'Nom du CHAMP' RegexP '^[0-9]{1,4}' asc
mais cela ne donne rien.
regexp renvoie juste 0 ou 1 suivant que ton champ correspond ou pas à l'expression, donc a priori toujours 1 dans ton cas. Je ne sais pas s'il existe un moyen (simple) d'extraire un bout d'une chaîne en utilisant une regex avec mysql (c'est possible avec postgresql).
Essaie plutôt order by cast(champ as signed) par exemple. Ca fait double effet: ça élimine tout ce qui dépasse, et en plus ça rendra le tri numérique.
Jacques.
- axis1
- Nouveau WRInaute

- Messages: 7
- Inscription: 30 Jan 2005
Melanger et bien agiter et hop voic la réponse
merci à vous deux
j'ai fait un mix
pour la fonction c'est SUBSTRING_INDEX(VolUnit, '-', 1) as Tri qui me permet de couper mon champ VolUnit à la première occurrence de - et de revoyer tout ce qui est gauche du tiret, et de le renommer en Tri
valeur utilisée dans order by cast(Tri as signed) pour transformer en numérique ce qui ne l'est pas.
et voila comment se compliquer encore une fois l'existence pour rendre service à l'ingrat visiteur qui ne se rendra compte de rien lol
merci encore
patrice
j'ai fait un mix
pour la fonction c'est SUBSTRING_INDEX(VolUnit, '-', 1) as Tri qui me permet de couper mon champ VolUnit à la première occurrence de - et de revoyer tout ce qui est gauche du tiret, et de le renommer en Tri
valeur utilisée dans order by cast(Tri as signed) pour transformer en numérique ce qui ne l'est pas.
et voila comment se compliquer encore une fois l'existence pour rendre service à l'ingrat visiteur qui ne se rendra compte de rien lol
merci encore
patrice
4 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- MySQL : ORDER BY qui se comporte comme ORDER BY BINARY !
- Requete MySQL et order
- MYSQL ORDER BY... somme de colonnes
- [MySQL] tirage aléatoire via ORDER BY rand()
- [MySQL] instruction order by dans un champ alphanumérique
- [Blogger] Afficher/Masquer une partie d'un message [résolu]
- [Résolu] Magpie afficher la partie "content:encoded&quo
- [resolu] Erreur Site map -->Cette URL ne fait pas partie
- [Résolu] Requête MySQL
- [Résolu]- Requête MySql
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Google écrit parfois au webmaster en cas de blacklistage - 16-09-2005
- 2 nouvelles astuces pour être bien visible dans Google News - 14-12-2007
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- Live Search bannit certains sites qui échangent des liens - 20-11-2006
- Sortie officielle de GoogleStats v2.0 ! - 23-02-2003
Consultez la description détaillée des produits ou services de Google suivants : Google Compute
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
