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

Langage SQL Discussion :

Trier des entiers de type VARCHAR


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut Trier des entiers de type VARCHAR
    Bonjour,

    On m'a confier un projet avec un base de donnée existante.
    Je dois trier une colonne (de type VARCHAR) et qui contient des entiers + 1 caractère en fin.

    Comment trier par exemple :

    1A
    2
    3
    30E
    103
    123
    123A
    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quel SGBD ?

    L'idée c'est de faire un substring du premier caractère à l'avant-dernier caractère, de convertir ceci en nombre et de trier dessus.

    Il faut aussi gérer le cas où ton caractère alpha est nul.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    MySQL.

    Voila ce que j'ai pu sortir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT user_nom, CONVERT(user_parking,UNSIGNED INTEGER) AS nb, user_parking 
    FROM `utilisateurs`
    ORDER BY (nb)
    Mais je voudrais avoir ceux qui sont renseigné en premier et non pas les 0 en premier.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    1
    2
    4
    6
    10
    50
    100
    0
    0
    0
    0
    0
    0
    Merci.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    Ta séquence ne tient pas debout.
    Soit tu as 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 50, 100
    Soit tu as 100, 50, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
    Voire même 1, 10, 11, 2, 20, 3, 4, 50

    Mais jamais 1, 2, 3, 5, 10, 50, 0

    Si tu fais ORDER BY tu peux faire :
    croissant : par défaut ou ASC
    décroissant : DESC
    (cf l'aide sur ORDER BY)

    Le zéro sera à la fin si tu utilises DESC mais l'ordre sera 100, 50, 10, 5, 3, 2, 1, 0

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Si je pense qu'il y a un moyen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by case when nb = 0 then null else nb end asc nulls last

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    Je connais la syntaxe d'ORDER BY mais je voulais savoir si y avait une fonction SQL qui pouvait m'aider.

    Ensuite j'ai essayé de ne pas afficher le 0 mais je comprend pas pourquoi, cette requete ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT user_nom,user_email,user_tel_interne,user_tel_externe,user_fax ,user_tel_mobile, user_commentaire,
    CONVERT(user_parking,UNSIGNED INTEGER) AS user_parking_entier, user_parking
    FROM `utilisateurs`
    WHERE user_parking_entier <> 0
    ORDER BY (user_parking_entier)
    Citation Envoyé par Waldar Voir le message
    Si je pense qu'il y a un moyen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by case when nb = 0 then null else nb end asc nulls last
    Apparemment non supporté par MySQL...

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Si je pense qu'il y a un moyen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by case when nb = 0 then null else nb end asc nulls last
    En gardant la même logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by case when user_parking_entier = 0 then 9999999 else user_parking_entier end asc
    Assurez-vous que 9999999 soit suffisant par rapport à vos données.

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

Discussions similaires

  1. Comment trier des fichiers par types et par tailles?
    Par xXO--Hades--OXx dans le forum Android
    Réponses: 3
    Dernier message: 07/12/2010, 12h09
  2. Trier des nombres entiers avec emu8086
    Par killerbee dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 20/03/2010, 00h29
  3. Réponses: 37
    Dernier message: 18/05/2008, 23h20
  4. récupérer le nom des champs d'une table de type VARCHAR
    Par melisse dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/02/2008, 11h03
  5. Réponses: 5
    Dernier message: 15/11/2005, 12h57

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