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 :

alignement a droite lors d'un insert


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut alignement a droite lors d'un insert
    hola a tous :

    voici ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     STATUSN                                   NOT NULL CHAR(10)
     DESCR                                     NOT NULL CHAR(255)
    et dans un programme je fais un appel sql pour inserer dans cette table ...
    le truc, je mouve une zone de 10 caracteres alphanum (sa valeur et toujours sur 2 caractere ex : 01) dans ma hostvariable de ma table "STATUSN" (10 caracteres egalement ) ....
    ma question : mon resultat dans ma table s alligne a gauche et des blancs a droite ..... je cherche a avoir le resultat a droite precedé de blancs ???

    merci merci !!!

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    A moins que le SGBDR en question ne le supporte pas le VARCHAR, utiliser le CHAR pour une chaine de 255 n'a aucun sens car ça prend plus de place et il faut se coltiner les espaces.

    D'autres part le SQL n'est pas de but de cosmétique (comme dirait Sqlpro). Ce genre de mise en page est à faire dans l'application appelante.


    Mais bon la solution serait quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rpad(trim(DESCR),255)
    rpad(trim(STATUSN),10)

  3. #3
    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
    Comme le conseille phili_b, utilisez de préférence le type VARCHAR ou VARCHAR2 qui n'ajoute de caractères de bourrage :
    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
    10g SOC5> CREATE TABLE DVP (X CHAR(4), Y VARCHAR2(4));
     
    Table créée.
     
    10g SOC5> INSERT INTO DVP VALUES ('XX', 'YY');
     
    1 ligne créée.
     
    10g SOC5> SELECT *
      2  FROM DVP;
     
    X    Y
    ---- ----
    XX   YY
     
    1 ligne sélectionnée.
     
    10g SOC5> SELECT '*' || X || '*', '@' || Y || '@'
      2  FROM DVP;
     
    '*'||X '@'||Y
    ------ ------
    *XX  * @YY@
     
    1 ligne sélectionnée.

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut
    bonjour a tous,

    merci pour vos reponses mais au risque de vous agacer je n ai rien compris et je ne sais comment avoir mon resulat aligné a droite ??
    merci merci !!

  5. #5
    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
    1/ Donnez-nous votre SGBDR et sa version comme exigé dans les règles du forum
    2/ vous devez modifier le type de vos colonnes de CHAR en VARCHAR ou VARCHAR2

    Que donne le résultat de cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table <le_nom_de_votre_table> modify statusn varchar2(10);
    ou de celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table <le_nom_de_votre_table> modify statusn varchar(10);
    Obtenez-vous un message d'erreur ? Si oui, lequel ?

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut
    je suis vraiment novice sur oracle et je l utilise que rarement ...
    a priori c est du oracle 9 sous unix !
    si il y a une commande qui donne des infos je suis preneur

    voici le script que j utilse pour cree mes tables
    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
    sqlplus  $A2_BASE_OWN/$A2_BASE_OWN <<sysin
                   Prompt CREATE TABLE TK6Z4
                   COMMIT;
                   CREATE TABLE TK6Z4 (
                   STATUSN            CHARACTER  (00002)     DEFAULT ' ' NOT NULL,
                   DESCR              CHARACTER  (00255)     DEFAULT ' ' NOT NULL)
                   Storage (Initial 100K Next 1M)
                   Tablespace $A2_BASE_LOC;
     
                   Prompt CREATE VIEW VK6Z41
                   CREATE VIEW VK6Z41 (
                   SERVCODE, DESCR)
                   AS SELECT TK6Z4.STATUSN, TK6Z4.DESCR
                   FROM TK6Z4 ;                            
     
     
                   Prompt ALTER TABLE TK6Z4
                   ALTER TABLE TK6Z4
                   ADD  CONSTRAINT PKK6Z4 PRIMARY KEY
                   (SERVCODE); 
     
                   CREATE PUBLIC SYNONYM TK6Z4 FOR TK6Z4;
     
                   GRANT ALL ON TK6Z4 TO ATLAS_USER;
                   GRANT ALL ON TK6Z4 TO OPS\$ATLAS;
                   GRANT SELECT ON TK6Z4 TO ATLAS_SELECT;
    finalement j ai decidé de mettre la variable sur 2 caracteres histoire de me simplifier la tache mais neanmoins il reste qlq soucis du genre sur un select sur cette table j ai une erreur colonne invalide "ORA-904"

    sinon comment dans mon script pourrai je utiliser du VCHAR2 svouplai?

  7. #7
    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
    Faîtes une sauvegarde de ce fichier et remplacez le par celui-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    sqlplus  $A2_BASE_OWN/$A2_BASE_OWN <<sysin
                   Prompt CREATE TABLE TK6Z4
                   COMMIT;
                   CREATE TABLE TK6Z4 (
                   STATUSN            VARCHAR2(2)     DEFAULT ' ' NOT NULL,
                   DESCR              VARCHAR2(255)     DEFAULT ' ' NOT NULL)
                   Storage (Initial 100K Next 1M)
                   Tablespace $A2_BASE_LOC;
     
                   Prompt CREATE VIEW VK6Z41
                   CREATE VIEW VK6Z41 (
                   SERVCODE, DESCR)
                   AS SELECT TK6Z4.STATUSN, TK6Z4.DESCR
                   FROM TK6Z4 ;

  8. #8
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut
    ok merci ca marche

  9. #9
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    mmmh....

    au vu du script, et de certaines expériences que j'ai eu , je dirais que c'est un import gros système vers Oracle, et que tout doit, malheureusement, rester en l'état.
    Pas de varchar. Pas de null mais des ' '. Pas de tables compréhensibles pour que ça reste compatible gros système. etc. etc..

    Je n'ai rien contre les gros systèmes ni contre les bases de données hiérarchiques, j'en ai contre les SGBDR utilisés comme des gros systèmes...

    Je parierais que la modification de CHAR vers VARCHAR va être refusée...et il est souvent impossible de faire entendre raison dans ces cas là.
    Sans parler des modélisations avec 150 colonnes sans aucune forme normale.

    Ils ne veulent pas comprendre qu'un SGBDR a un moteur relationnel et n'est donc pas outillé et optimisé pour des tables de gros systèmes.

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

Discussions similaires

  1. [PPT-2007] Changement de l'alignement de police lors d'insertion de slides
    Par Opatija dans le forum Powerpoint
    Réponses: 2
    Dernier message: 20/05/2011, 10h55
  2. Réponses: 3
    Dernier message: 14/05/2008, 14h07
  3. Réponses: 4
    Dernier message: 24/06/2004, 12h13
  4. maj d'1 colonne avec la date du jour lors de l'INSERT
    Par Celina dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/12/2003, 15h03
  5. [VB6] [Printer] Chiffres alignés à droite
    Par Laye dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 03/10/2002, 18h36

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