Mysql faire un order by sur une partie d'un champ [RESOLU]

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par axis1, 27 Décembre 2008.

  1. axis1
    axis1 Nouveau WRInaute
    Inscrit:
    30 Janvier 2005
    Messages:
    6
    J'aime reçus:
    0
    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
     
  2. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 952
    J'aime reçus:
    275
    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à
     
  3. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Re: Mysql faire un order by sur une partie d'un champ

    Donc ton champ est de type texte (varchar ou autre du même genre).

    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)?

    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.
     
  4. axis1
    axis1 Nouveau WRInaute
    Inscrit:
    30 Janvier 2005
    Messages:
    6
    J'aime reçus:
    0
    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
     
Chargement...
Similar Threads - Mysql order partie Forum Date
MySql order by Développement d'un site Web ou d'une appli mobile 7 Décembre 2012
Mysql : problème de IN et ORDER BY Développement d'un site Web ou d'une appli mobile 23 Août 2012
Requete MySQL et order Développement d'un site Web ou d'une appli mobile 19 Août 2011
MYSQL ORDER BY... somme de colonnes Développement d'un site Web ou d'une appli mobile 7 Janvier 2010
MySQL : ORDER BY qui se comporte comme ORDER BY BINARY ! Développement d'un site Web ou d'une appli mobile 28 Avril 2008
[MySQL] instruction order by dans un champ alphanumérique Développement d'un site Web ou d'une appli mobile 17 Juillet 2006
[MySQL] tirage aléatoire via ORDER BY rand() Développement d'un site Web ou d'une appli mobile 4 Septembre 2004
Mysql : Impact convertion champ numérique SMALLINT vers BIGINT Développement d'un site Web ou d'une appli mobile 23 Août 2021
Quel SGBDR autre que MySQL/MariaDB ? Administration d'un site Web 12 Janvier 2021
encodage texte sur requete mysql Demandes d'avis et de conseils sur vos sites 21 Octobre 2020
Requête MySql imbriquée Développement d'un site Web ou d'une appli mobile 8 Octobre 2020
Supprimer les doublons d'une table mysql Développement d'un site Web ou d'une appli mobile 16 Juin 2020
Mysql migration utf8->utf8mb4 Développement d'un site Web ou d'une appli mobile 17 Août 2019
recherche lettres dans mysql Développement d'un site Web ou d'une appli mobile 11 Juillet 2019
cache mysql maison Développement d'un site Web ou d'une appli mobile 18 Février 2019
Stocker dans des variables php les fonctions MySql Développement d'un site Web ou d'une appli mobile 2 Février 2019
message : [LEGACY][libmysqlclient] Please consider moving to stable and mysqlnd in Administration d'un site Web 8 Novembre 2018
Connexion à un serveur mysql distant Développement d'un site Web ou d'une appli mobile 21 Octobre 2018
Mysql, modifier des chaines avec différents caractères Administration d'un site Web 13 Septembre 2018
Fusionner deux champs sur la même table et même base de donnée Mysql Administration d'un site Web 12 Septembre 2018