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

PostgreSQL Discussion :

[8.2 ORDER BY] Les caractères ignorés


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut [8.2 ORDER BY] Les caractères ignorés
    'jour,

    J'ai qques soucis de classements avec des données qui contiennent des caractères espace avec un ENCODING LATIN1 et un LC_COLLATE fr_FR.

    En effet avec un ORDER BY sur le champ, j'obtiens comme résultat (2 espaces entre les nombres sauf pour celui qui est mal classé - un seul espace) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1  1
    1 10
    1  2
    1  3
    1  4
    alors que j'aimerais obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1  1
    1  2
    1  3
    1  4
    1 10
    Il me semble donc que le caractère espace fait partie des caractères ignorés lors du classement (me trompé-je ?).
    Comment remédier à ça ?
    Dois-je ajouter à ma requête une clause supplémentaire indiquant que je veux que soit utilisé un classement ASCII (et si oui comment ?)
    Mais ne peut-on pas spécifier ça globalement pour toutes les requêtes ?

    P.S. : J'ai pas trouvé de documentation éclairée à ce sujet, que ce soit sur http://www.postgresql.org ou ailleurs. Si quelqu'un a des liens, je suis preneur

    Merci de votre aide,
    JYves

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut
    Hum, je crois que je vais devoir cross-poster

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut
    Citation Envoyé par JYves Voir le message
    Hum, je crois que je vais devoir cross-poster
    Un conseil à ce sujet ?

    Un forum ou un site ?

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour,
    j'ai testé ton exemple je n'ai pas eu de problème, pour info
    sur un serveur 8.03 encoding=latin1 et lc_collate=C (valeur par defaut)
    sur un serveur 8.3 encoding=win1252 et lc_collate french_France.1252
    essaye de recreer une base avec ces valeurs,
    autrement pour changer l'encodage avant ta requete de tri tu fait
    set client_encoding to 'mon_encodage';
    il n'est pas possible d'apres la doc de changer le lc_collate d'une base existante

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut
    Merci de ton aide et de tes tests.

    Je vais étudier ça de près (mais je n'ai pas de serveur 8.3 à disposition)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    bonjour,
    j'ai testé ton exemple je n'ai pas eu de problème, pour info
    sur un serveur 8.03 encoding=latin1 et lc_collate=C (valeur par defaut)
    sur un serveur 8.3 encoding=win1252 et lc_collate french_France.1252
    essaye de recreer une base avec ces valeurs,
    autrement pour changer l'encodage avant ta requete de tri tu fait
    set client_encoding to 'mon_encodage';
    il n'est pas possible d'apres la doc de changer le lc_collate d'une base existante
    Le LC_COLLATE=C ne m'interesse pas comme classement. J'ai besoin d'un classement alphabétique français pour l'ensemble de mes requêtes.
    Je n'ai pas encore testé ta deuxième solution (j'ai besoin que mon Admin réseau me fasse une installation, je n'ai pas les droits). Il faut aussi que j'étudie quelles sont exactement les différences (de classement notamment) entre les jeux de caractères LATIN1 et WIN1252 pour voir si ça peut me convenir.

    Pour l'instant, vu que le champ que je souhaite classer n'a strictement que des espaces ou des chiffres, j'ai résolu le problème en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY REPLACE(MONCHAMP, ' ', '0')

    Encore merci de ton aide, je pousserai mes tests (jeu WIN1252) dès que j'en aurai la possibilité.

Discussions similaires

  1. [SAX] Parser en ignorant les caractères spéciaux
    Par pshiit78 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 18/10/2012, 15h35
  2. ORDER BY et les caractères accentués
    Par steph0612 dans le forum Requêtes
    Réponses: 1
    Dernier message: 01/06/2007, 22h20
  3. Réponses: 7
    Dernier message: 12/05/2003, 22h50
  4. Traiter les caractères spéciaux
    Par ricola dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2003, 09h23
  5. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30

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