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

DB2 Discussion :

Changer sequence de tri d'une table(HEX -> ASCII)


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 235
    Par défaut Changer sequence de tri d'une table(HEX -> ASCII)
    Bonjour,

    Je viens de me rendre compte que la sequence de tri d'une table AS400 est en HEXA. Donc quand je fais un ORDER BY(CHAMP) j'ai les lettre avant les chiffres et cela ne m'arrange pas. Je souhaite avoir un tri 'ASCII' càd les chiffres avant les lettres.

    J'ai essaié avec la commande CHGPF pour changer la propriété de sequence de tri mais impossible de changer ce parametre car la table a été créée par des instructions SQL....

    La seul solution que j'ai trouvé c'est de directement utiliser la fonction suivante : GROUP BY ASCII(CHAMP).

    Ca fonctionne mais le problème c'est que je dois en prendre compte dans mon application (qui est multi-DB). Je ne souhaite pas en prendre compte au niveau de code.

    Y a t il un moyen (commande ou instruction SQL) permettant de changer la sequence de tri sur ASCII au lieu de HEX ?

    Merci d'avance de votre aide !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Dans ton driver ODBC, dans l'onglet Langue, type de tri = Tri par la table indiquée et tu renseignes QASCII

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 235
    Par défaut
    Merci pour la réponse ! Piste interessante ! mais le problème c'est que mon application passe par le provider IBM .NET (IBM.Data.DB2.iSeries.dll) et je ne trouve pas d'écran similaire pour configurer cela.
    Quelqu'un à une idée ?
    Merci !

    P.S : j'ai quand même essayé en configurant le driver ODBC mais cela ne change rien (je m'en doutais un peu).

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Imagine tu veux faire un order by nom, prenom en ascii.
    Tout d'abord sous STRSQL, fais F13 puis 1 et modifie la séquence de tri en QASCII.
    Ensuite créé un nouvel index sous nom + prenom.
    Avec un dspfd sur l'index tu verras qu'il est créé avec la table QASCII.
    Sans sortir essaye de faire un SELECT avec order by nom, prenom.
    Il est bien trié en ASCII.
    Maintenant, si tu veux être tranquille, en début de requête tu fais un
    set option SRTSEQ = QASCII.

    S'il existe un index créé sous QASCII correspondant à ton order by, le tri se fera en ASCII si ton job est aussi en QASCII (fait par le set option)

    Tu as aussi l'option "bricolage"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select * from matable
    order by translate(nom concat prenom, '.<(+!&$*);', '0123456789')

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 235
    Par défaut
    J'ai changé les paramêtres de la session STRSQL pour me mettre en QASCII.
    J'ai ensuite recréer la table + les 2 index associés.
    Quand je fais un DSPFD sur la table ou sur les index, ils sont tous lié à QASCII mais lorsque j'utilise mon application qui interroge cette table, l'ordre de tri n'a toujours pas changé (comme si il etait toujours en *HEX). C'est très étrange

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    C'est ce que je te disais.
    Il faut que ta session soit aussi sous QASCII.
    Avant tout ordre SQL, tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set option SRTSEQ = QASCII
    puis ton ordre SQL

    http://publib.boulder.ibm.com/infoce...mstsoption.htm


    Citation Envoyé par CAML Voir le message
    ... J'ai ensuite recréer la table + les 2 index associés.
    La table n'était pas necessaire et un seul index suffisait, celui correspondant à ta clause ORDER BY. Mais quelle est cette clause ORDER BY, peux-tu poster l'instruction SQL ?

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

Discussions similaires

  1. [WD5.5] Tri d'une table fichier.
    Par Thanor dans le forum WinDev
    Réponses: 15
    Dernier message: 30/01/2007, 16h57
  2. Changer le propriétaire(owner) d'une table
    Par FamiDoo dans le forum Administration
    Réponses: 2
    Dernier message: 13/12/2006, 15h55
  3. fonction qui fait le tri d'une Table de BDD
    Par devlopassion dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/10/2006, 15h28
  4. [Acces] Tri dans une table
    Par badnane2 dans le forum Access
    Réponses: 3
    Dernier message: 01/08/2006, 23h34
  5. [C#] Changer la propriété background d'une table
    Par dupin40 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/11/2005, 11h12

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