IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Trier un champ VARCHAR par ordre numérique


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut Trier un champ VARCHAR par ordre numérique
    Bonjour,

    J'ai un champ VARCHAR mais je voudrais le trier comme s'il était numérique.

    1 | 2 | 10 | 10,2
    et non 1 | 10 | 10,2 | 2

    J'ai l'impression que c'est impossible avec ORDER BY, je ne vois pas la formule qque je peux ajouter.

    Merci d'avance de vos lumières.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Bonjour,

    Pour que ça fonctionne, il va falloir changer le type de la colonne dans le order by, en le transformant en DECIMAL par la fonction CAST ou la fonction CONVERT.
    Ca doit donner quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...ORDER BY CAST(champ AS DECIMAL(5,2))
    Les chiffres dans DECIMAL seront fonction des valeurs dans le champ texte.
    Voici le lien vers la documentation MySQL pour les fonctions CAST et CONVERT.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut
    Bonjour,

    Merci beaucoup

    Dans la doc Mysql, il n'y a pas DECIMAL, mais SIGNED ou UNSIGNED.

    J'ai l'impression que les nombres FLOAT sont traités comme des INT, mais je ne suis pas sûr d'avoir bien compris.

    J'ai trouvé une autre solution qui me permet de conserver mon champ FLOAT, c'est plus simple.

    Petite question subsidiaire.

    Tu peux définir un champ FLOAT par deux chiffres, j'ai cru comprendre :
    5,5 = 5 chiffres avant la virgule, 5 décimales ?

    Comment tu entres ces données avec PHPadmin ?

    Dans la zone de saisie taille/valeur, tu entres 5,5 ??

    Je n'ai pas envie de faire une fausse manœuvre qui bouzille mes milliers d'entrées !!!

    J'ai dû transformer le champ FLOAT en DOUBLE pour qu'il accepte les nombres à 8 décimales mais peut-être aurais-je pu forcer la taille du FLOAT.

    Encore merci.

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Euh, il n'est pas question, dans ma réponse, de changer le type d'une colonne.
    Il faut juste, dans la requête, convertir le champ VARCHAR en un champ de type numérique, pour pouvoir faire un tri sur ce nombre.
    Si tout reste dans un SELECT, il n'y a aucun risque de bousiller quoi que ce soit .
    Pour le type, voici les liens vers la documentation MySQL qui donnent tous les détails sur les différents types numériques :
    lien 1 et lien 2

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 685
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par ced Voir le message
    Euh, il n'est pas question, dans ma réponse, de changer le type d'une colonne.
    Je sais, c'est moi qui m'y suis risqué.
    Il faut juste, dans la requête, convertir le champ VARCHAR en un champ de type numérique, pour pouvoir faire un tri sur ce nombre.
    Si tout reste dans un SELECT, il n'y a aucun risque de bousiller quoi que ce soit .
    ced
    Compris.

    Bonjour,
    Encore merci de ta réponse.
    Je considère le problème comme résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Trier onglet classeur excel par ordre croissant numéro et alphabétique
    Par Anna_2013 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 14/06/2013, 17h05
  2. Tri d'un varchar suivant ordre numérique
    Par Bibicmoi dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/07/2010, 14h34
  3. Réponses: 4
    Dernier message: 30/05/2010, 22h31
  4. [8.5] Trier des champs dans un ordre bien précis!
    Par Gotch59 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 25/05/2007, 15h02
  5. Classer un champ type texte par ordre numérique
    Par Mariboo dans le forum Access
    Réponses: 8
    Dernier message: 15/06/2006, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo