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 :

Formatage résultat requête


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut Formatage résultat requête
    Re bonjour

    Je voulais savoir s'il était possible dans un SELECT d'employer des fonctions de formatage et d'alignement, comme le setw() de C++, qui fixe le nombre de caractères à employer pour afficher une variable donnée dans les flux. En fait je veux concaténer 2 colonnes, ce que je réalise sous Oracle 9i avec l'opérateur ||, mais de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    306    (Peugeot)
    407    (Peugeot)
    Clio   (Renault)
    Mégane (Renault)
    F50    (Ferrari)
    626    (Mazda)
    Polo   (Volkswagen)
    Et non pas ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    306 (Peugeot)
    407 (Peugeot)
    Clio (Renault)
    Mégane (Renault)
    F50 (Ferrari)
    626 (Mazda)
    Polo (Volkswagen)
    Merci d'avance
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    C'est ce que SQLpro appelle de la "cosmétique" si je ne m'abuse et par conséquent ça ne doit pas être à la charge du langage SQL ?

    Quoi qu'il en soit si je me trompe, je propose à tout hasard de combler la différence par une chaîne formée d'une répétition (= la différence entre la taille de la chaîne maximale et la taille de la chaîne courante) du caractère espace.

    Pour être plus clair, "Mégane" est la chaîne la plus longue (taille = 6) donc il faut combler "306" par 6 - 3 = 3 espaces.

    Qu'en penses-tu ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Sous ORACLE, il existe la fonction RPAD qui fait cela très bien.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    La fonction RPAD correspond en effet à l'objet de ma demande, donc merci encore une fois à Médiat. Quant à la solution de Magnus, je ne peux nier qu'elle est ingénieuse, bien qu'il faille chercher la chaîne la plus longue avant de calculer la différence à appliquer...

    Petit exemple pour la route :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT RPAD (Modele, 7, ' ') || Marque
    FROM Modele INNER JOIN Marque ON Modele.IdMarque = Marque.IdMarque
    Merci vous deux... Si ça continue je vais finir par vous aduler
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Original Prankster
    Si ça continue je vais finir par vous aduler
    Je suis d'accord, et toi Magnus ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    ça me va aussi

    PS : je plaisante bien sûr : mon niveau est loin d'égaler celui de certains utilisateurs de ce forum (dont Médiat & SQLpro) qui d'ailleurs m'a récemment mis une déculottée parce que je donnais des solutions avec des requêtes qui ne respectaient pas la norme


    Au plaisir de vous recroiser.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  7. #7
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par Magnus
    avec des requêtes qui ne respectaient pas la norme
    Ca craint quand même... 8)
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  8. #8
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Ah, ya quand même un petit problème avec RPAD ! En effet, si j'utilise une police d'écriture telle qu'Arial (dans une liste déroulante au sein d'une application web ca me semble normal), ca ne m'aligne pas les colonnes... Et pour cause, Arial n'est pas une police monospace !

    En fait faudrait voir s'il existe pas une façon de combler ça à la Windows, avec une tabulation...

    Une idée ?
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  9. #9
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    avec une tabulation ?
    Oui, avec une tabulation !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Modèle || '	' || Marque
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  10. #10
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Facile à dire ! Je suis en Java, moi ! Si je tape sur la touche tab j'obtiens un espace dans mon code et donc un espace dans le résultat rendu par ma requête, tandis que si j'insère un '\t', je me retrouve avec :
    ... Et maintenant ?
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  11. #11
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je ne comprends pas ton programme interprète une information entre quote, es-tu sur que ce n'est pas ton éditeur de texte qui transforme les tab en espaces ?
    Sinon : chr(9), ou quelque chose comme ça. 9 est le code ASCII de la tabulation
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  12. #12
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par Médiat
    es-tu sur que ce n'est pas ton éditeur de texte qui transforme les tab en espaces ?
    Je pense effectivement que c'est lui. Par ailleurs les '\t' sont également traduits dans mes listes déroulantes par un simple espace.

    chr(9) c'est du SQL ça ?
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Utilise le code ASCII : ça doit être 009 d'après ce site : www.lookuptables.com
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  14. #14
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    chr(9) c'est du SQL ça ?
    c'est ça : c'est une UDF sous Interbase mais j'ai testé ça fonctionne aussi sous ORACLE 8i donc tu peux essayer.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  15. #15
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    CHR est bien une fonction ORACLE, chr(9) est une tabulation.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  16. #16
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Ma foi, effectivement CHR(9) semble être une tabulation. Voici les divers résultats que j'obtiens :
    • - Tools for Oracle Administrators and Developers ne semble pas reconnaître ce caractère mais place un espèce de caractère (pipe gras) identique à celui affiché lorsque j'avais directement entré une tabulation entre les quotes.
      - L'éditeur SQL de Sun Java Studio Creator ne répond plus (!), mais a bien compris le '\t' de tout à l'heure dans le code Java.
      - Ma liste déroulante en HTML continue d'arborer un simple espace, avec n'importe quelle des solutions que j'ai pu essayer.


    Bref, je pense que les tabulations ne sont pas prévues pour les listes déroulantes...
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  17. #17
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    - Tools for Oracle Administrators and Developers ne semble pas reconnaître ce caractère mais place un espèce de caractère (pipe gras) identique à celui affiché lorsque j'avais directement entré une tabulation entre les quotes
    Il est vrai que sous Interbase 6, la concaténation : me retourne 'xxxyyy' sans espace ni tabulation.

    Pourtant le code ASCII semble être correct...
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  18. #18
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par Magnus
    Pourtant le code ASCII semble être correct
    Je ne doute pas qu'il le soit. C'est juste que nos éditeurs SQL ne l'interprètent pas. Mais au fond ce qui me pose soucis c'est le résultat final dans le composant JSF... Bon, c'était juste de la "cosmétique", avec 2 espaces ça fait tout aussi bien... enfin presque...
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  19. #19
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Bref, je pense que les tabulations ne sont pas prévues pour les listes déroulantes...
    Je te le confirme, windows fonctionne ainsi pour les combo-box. Ce n'est donc plus un problème SQL.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  20. #20
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    OK, et bien merci beaucoup. Aaah Windows... Rah lala koi.

    A+
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

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

Discussions similaires

  1. Formatage résultat d'une requête
    Par Denn's dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/07/2007, 19h17
  2. Résultat requête
    Par mr.t dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/02/2005, 18h58
  3. [IB6] Stocker résultat requête ds fichier txt réseau
    Par Cerberes dans le forum Débuter
    Réponses: 6
    Dernier message: 04/10/2004, 15h13
  4. Table temporaire et résultat requête
    Par Royd938 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2004, 14h24
  5. formatage des requêtes sous psql
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/02/2004, 11h10

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