Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Sql*Plus
Sql*Plus Forum d'entraide sur Oracle Sql*Plus
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 17h11   #1
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 19
Points : 4
Points : 4
Par défaut Petite question formatage

Bonjour,

je dois effectuer un spool contenant plusieurs requêtes. Le fichier est généré correctement, il contient tous les enregistrements que je désire, cependant, j'ai un petit soucis de formatage.

J'ai un champ nom défini en tant que varchar2(255), et dans mes résultats, la longueur de la chaîne ne les atteint pas. Le problème c'est que dans mon fichier, au niveau du champ nom, un espace de 255 caractère est créé, générant un nombre impressionnant de blanc.

J'aurais aimé savoir si il était possible de supprimer ces blancs. J'avais pensé à définir les tailles de colonne à l'aide de FORMAT mais je ne sais pas à l'avance combien de caractère composera ma réponse, j'ai essayé les différents trim disponible sans résultat, je commence à me dire que ce n'est pas possible.

Je ne suis pas propriétaire de la base, aussi je ne peux pas redéfinir la taille des colonnes.


Si quelqu'un à une idée je suis preneur, merci !
Enishi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 20h44   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
En utilisant NEW_VALUE tu peux réafecter la taille max de la colonne à sa longueur d'affichage :
Code :
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
SQL> CREATE TABLE test (c varchar2(100));
 
TABLE created.
 
SQL> INSERT INTO test VALUES ('toto');
 
1 row created.
 
SQL> INSERT INTO test VALUES ('titi');
 
1 row created.
 
SQL> INSERT INTO test VALUES ('tintin');
 
1 row created.
 
SQL> SELECT c FROM test;
 
C
--------------------------------------------------------------------------------
toto
titi
tintin
 
SQL>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SQL> COLUMN max_len new_value max_len
SQL> SELECT 'A'||max(length(c)) AS max_len FROM test;
 
MAX_LEN
-----------------------------------------
A6
 
SQL> COLUMN c format &max_len
SQL> SELECT c FROM test;
 
C
------
toto
titi
tintin
 
SQL>
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 16h37   #3
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 19
Points : 4
Points : 4
Salut, j'ai encore passé la matinée et le début de mon après midi à me battre avec mon script SQL. La solution que tu as proposé m'a pas mal intéressé mais en sortie du SPOOL rien à faire il continue à me laisser des espaces partout. Je commence à vraiment croire que ce n'est pas possible et j'essaye de formatter le fichier avec sed une fois celui ci généré
Enishi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h00.


 
 
 
 
Partenaires

Hébergement Web