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 :

ORDER BY sur type VARCHAR


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut ORDER BY sur type VARCHAR
    Bonjour,
    j'ai un petit souci sur une requête toute simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT NOM FROM TB_USER ORDER BY NOM ASC
    J'ai donc quatre utilisateurs dans ma table, le retour est le suivant :
    Bonte
    BONTE
    Durand
    DURAND

    Enfaisant un tri descendant comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM FROM TB_USER ORDER BY NOM DESC
    J'ai le résultat suivant :
    Durand
    DURAND
    Bonte
    BONTE

    Donc quelque-soi le type de tri, je me retrouve toujours avec le nom MAJUSCULE situé après le nom en minuscule.

    Sauriez-vous comment je pourrais régler le pb en ayant un résultat de tri ascendant qui me donne :
    Bonte
    BONTE
    Durand
    DURAND

    et descendant :
    DURAND
    Durand
    BONTE
    Bonte

    Merci

  2. #2
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 576
    Points
    576
    Par défaut
    Je ne sais pas quel serveur tu utilise, mais a première vue c'est un problème de COLLATE, tu dois utiliser le "COLLATE FR_FR" au lieu du "COLLATE ISO8859_1" sur la colonne NOM.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Merci pour cette info.
    Je viens de regarder de la doc sur ce COLLATE et la définition est :
    Clause pouvant être appliquée à la définition d'une base de données ou d'une colonne pour définir le classement,
    Dans mon cas, je ne veux pas toucher à la DB existante et faire avec le "collation" par défaut. Donc y'a-t-il une autre possibilité avec (ou sans) COLLATE pour obtenir le bon résultat de tri sans redifinir ma colonne ?


    Je viens d'essayer avec le COLLATE dans ma requête mais le résultat est le même. Par contre, quel type de COLLATE me préconises-tu ?
    Car le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM COLLATE French_CI_AS FROM TB_USER ORDER BY NOM ASC
    ou me ramène exactement les mêmes résultats que précédement. J'ai toujours les minuscules avant les MAJUSCULES

  4. #4
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 576
    Points
    576
    Par défaut
    Tu dois simplement utiliser le COLLATE dans l'ordre de tri "ORDER BY", comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT NOM FROM TB_USER ORDER BY NOM COLLATE FR_FR DESC
    Pour trouver le COLLATE qui te convient, fait des essais.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Ok merci, je vais chercher dans ce sens

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Bonjour,
    eh bien en ayant essayé plusieurs COLLATE, je n'y arrive toujours pas , donc auriez-vous une autre solution à me proposer svp ?
    Merci

    Bon finalement, j'ai ajouté un tri sur l'identifiant unique de la table et ça passe.
    Merci

  7. #7
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 576
    Points
    576
    Par défaut
    Quel serveur tu utilise ? pars-que le "COLLATE" de certain serveur est configurable seulement au niveau de la base, pas de la colonne. Je crois savoir que le meilleur a ce niveau là est Firebird, c'est lui que j'ai utilisé dans les exemples.

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

Discussions similaires

  1. SELECT ORDER BY sur VARCHAR alphanumérique bizarre
    Par trent94 dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/03/2013, 16h27
  2. Réponses: 10
    Dernier message: 12/09/2011, 13h22
  3. Agregat sur type Varchar
    Par widom dans le forum Développement
    Réponses: 3
    Dernier message: 26/05/2009, 13h27
  4. Simple question sur le champ de type varchar
    Par argon dans le forum Débuter
    Réponses: 5
    Dernier message: 14/05/2009, 08h34
  5. Recherche sur date avec une colonne de type varchar
    Par Cladjidane dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/08/2008, 22h35

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