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 :

ORDER BY sensible à la casse?


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 25
    Points : 16
    Points
    16
    Par défaut ORDER BY sensible à la casse?
    Bonjour,

    En utilisant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from table order by username
    , je m'apercois que MySQL trie d'abord les noms avec une Majuscule au début puis ensuite les noms en minuscule... Y a t il un moyen de faire un tri sans tenir compte de la majuscule du début, mais uniquement de la lettre?

    exemple: j'obtiens ca

    Adam
    Beatrice
    ...
    Zylo
    alala
    boubou
    ...
    xav

    alors que je voudrais plutot

    Adam
    alala
    Beatrice
    boubou
    ...

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    méthode brutale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE ORDER BY UPPER(username)
    méthode officielle, avec un username en latin1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM TABLE 
    ORDER BY username COLLATE latin1_general_ci
    idem, si le username est en utf8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM TABLE 
    ORDER BY username COLLATE utf8_general_ci
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup!

    Je pense qu'utiliser la méthode officielle est plus propre, mais ne s'adapterait pas à une base avec un encodage différent, non?

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    quel que soit "l'encodage" (que je préfère appeler le jeu de caractères), il y a au moins une collation insensible à la casse (_ci) pour lui.

    En terme de perf, l'idéal est en fait de déclarer la collation dans la définition de la colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE ta_table
    MODIFY username VARCHAR(255)  COLLATE latin1_general_ci
    Cela te permet en effet d'indexer username en tenant compte de l'insensibilité.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Merci en tous cas pour tes réponses
    Ce qui est marrant c'est qu'on voit les codeurs passionnés en jetant un coup d'oeil sur les dates + heure des posts

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

Discussions similaires

  1. sensible à la casse
    Par espritou dans le forum Oracle
    Réponses: 5
    Dernier message: 20/02/2007, 14h25
  2. [MySQL] Récupérer une valeur avec SELECT sensible à la casse
    Par nuphius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/01/2007, 15h21
  3. Réponses: 2
    Dernier message: 15/05/2006, 14h08
  4. [Requête] SELECT sensible à la casse
    Par joefou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2006, 14h23
  5. Nom de la table sensible à la casse
    Par Alexandre T dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/03/2005, 17h34

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