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

SQL Firebird Discussion :

Problème de tri pour un varchar


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 721
    Par défaut Problème de tri pour un varchar
    Bonjour à tous

    voici mon problème, dans ma base de donnée sous firebird 2.5
    j'ai les données suivantes de type varchar en ISO5559_1, voici l'odre de tri que je veux avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    AS/GF/1
    AS/GF/2
    AS/GF/3
    AS/GF/4
    AS/GF/5
    AS/GF/10
    AS/GF/11
    AS/GF/20
    AS/GF/21
    et voila l'ordre de tri que j'ai sous mon editeur IBmanager
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    AS/GF/1
    AS/GF/10
    AS/GF/10
    AS/GF/11
    AS/GF/20
    AS/GF/21
    AS/GF/3
    AS/GF/4
    AS/GF/5
    comment faire ?
    merci pour votre aide

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    soit changer AS/GF/1
    pour AS/GF/01

    soit utiliser cette fonctionnalité
    http://firebirdsql.org/rlsnotesh/rls...5-intl-numsort

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 721
    Par défaut
    Bonne et heureuse Année 2011 à tous
    soit changer AS/GF/1
    pour AS/GF/01
    impossible car les données sont déja utliser pour un autre processus.
    soit utiliser cette fonctionnalité
    http://firebirdsql.org/rlsnotesh/rls...5-intl-numsort
    j'ai bien lu mais je ne vois pas comment utiliser concretement pour mon cas.
    parce que dans mon cas j'utilise le ISO5559_1

    Merçi

  4. #4
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Citation Envoyé par devalender Voir le message
    j'ai bien lu mais je ne vois pas comment utiliser concretement pour mon cas.
    parce que dans mon cas j'utilise le ISO5559_1 :calim2
    Je pense que tu parles plutot du ISO8859_1.

    Pour ce qui est de la réponse de Makowski, il te faut créer un nouveau type de tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    create collation unicode_num for utf8
    from unicode 'NUMERIC-SORT=1';
    Après tu n'as plus qu'a l'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select ColonneISO8859_1 from matable
    order by ColonneISO8859_1 collate unicode_num;
    Je n ai pas encore installé fb 2.5 donc je n ai pas testé.

    Peut être te faudra t'il faire un cast avant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select ColonneISO8859_1 from matable
    order by cast(ColonneISO8859_1 as 'le même type que la colonne ColonneISO8859_1' character set utf8) collate unicode_num
    ;
    Je me demande si type of column fonctionne ici (hum... va falloir que je l'installe cette 2.5) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select ColonneISO8859_1 from matable
    order by cast(ColonneISO8859_1 as TYPE OF COLUMN matable.ColonneISO8859_1 CHARACTER SET utf8) collate unicode_num
    ;
    Par contre je ne suis pas certain qu'il va utiliser l'index si tu en as un sur cette colonne.
    Il te faudra créer un index avec le bon collate.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 721
    Par défaut
    excuser moi pour ma reponse tardive , j'ai access a internet a plein temps
    merci pour ta reponse je pense que je vais m'y mettre et ensuite revenir pour poster les resultats

  6. #6
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    SQL> CREATE TABLE TESTTRI (COLA VARCHAR(10) CHARACTER SET ISO8859_1 COLLATE FR_FR);
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/1');
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/2');
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/3');
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/4');
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/5');
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/10');
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/11');
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/20');
    SQL> INSERT INTO TESTTRI (COLA) VALUES ('AS/GF/21');
    SQL> COMMIT;
    SQL> SELECT COLA FROM TESTTRI ORDER BY COLA;
     
    COLA       
    ========== 
    AS/GF/1    
    AS/GF/10   
    AS/GF/11   
    AS/GF/2    
    AS/GF/20   
    AS/GF/21   
    AS/GF/3    
    AS/GF/4    
    AS/GF/5    
     
    SQL> CREATE collation unicode_num FOR utf8
    CON> FROM unicode 'NUMERIC-SORT=1';
    SQL> COMMIT;
    SQL> SELECT COLA FROM TESTTRI ORDER BY CAST(COLA AS VARCHAR(10) CHARACTER SET UTF8) COLLATE unicode_num;
     
    COLA       
    ========== 
    AS/GF/1    
    AS/GF/2    
    AS/GF/3    
    AS/GF/4    
    AS/GF/5    
    AS/GF/10   
    AS/GF/11   
    AS/GF/20   
    AS/GF/21   
     
    SQL>

  7. #7
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    Citation Envoyé par Barbibulle Voir le message
    Je me demande si type of column fonctionne ici
    non
    en utilisant tu ne peux pas changer de jeux de caractère

    par contre tu peux tricher un peu et faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT _UTF8 ''||COLA From TESTTRI ORDER BY 1 COLLATE unicode_num;
     
    CONCATENATION                            
    ======================================== 
    AS/GF/1                                  
    AS/GF/2                                  
    AS/GF/3                                  
    AS/GF/4                                  
    AS/GF/5                                  
    AS/GF/10                                 
    AS/GF/11                                 
    AS/GF/20                                 
    AS/GF/21                                 
     
    SQL>

  8. #8
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    non ma question sur type of column ce n'était pas pour changer le charset.

    C'était pour savoir si :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COLA FROM TESTTRI ORDER BY CAST(COLA AS TYPE OF COLUMN TESTTRI.COLA CHARACTER SET UTF8) COLLATE unicode_num;
    fonctionnait ?

Discussions similaires

  1. Problème de parcours et de tri pour outlook via Excel
    Par Shamix dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2013, 10h19
  2. [MySQL] Problème de tri pour une application
    Par nanor21 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 11/05/2006, 19h08
  3. Problème unit CRT pour Faire du Pascal avec Delphi
    Par alexmorel dans le forum Débuter
    Réponses: 4
    Dernier message: 01/06/2004, 17h13
  4. problème de tri et optimisatiopn
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/05/2004, 10h44
  5. Réponses: 5
    Dernier message: 27/08/2003, 11h45

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