Frage

Ich bin mit Oracle SQL (in sqldeveloper, so habe ich keinen Zugriff auf SQLPLUS wie Spaltenbefehle) eine Abfrage auszuführen, die etwa wie folgt aussieht:

select assigner_staff_id as staff_id, active_flag, assign_date,
  complete_date, mod_date
from work where assigner_staff_id = '2096';

Die Ergebnisse es mir geben, etwas wie folgt aussehen:

STAFF_ID               ACTIVE_FLAG ASSIGN_DATE               COMPLETE_DATE             MOD_DATE                  
---------------------- ----------- ------------------------- ------------------------- ------------------------- 
2096                   F           25-SEP-08                 27-SEP-08                 27-SEP-08 02.27.30.642959000 PM 
2096                   F           25-SEP-08                 25-SEP-08                 25-SEP-08 01.41.02.517321000 AM 

2 rows selected

Dies kann sehr leicht einen sehr großen und unhandlichen Text Bericht erzeugen, wenn ich versuche, die Ergebnisse als schön formatierte schnell-n-dirty Textblock in einen E-Mail oder ein Problem Bericht einzufügen, usw. Was ist der beste Weg, rid of all tha zusätzlichen Leerraum in den Ausgabespalten zu erhalten, wenn ich SQL nur Plain-Vanilla-Oracle mit bin? Bisher sind alle meine Web-Recherchen haben viel nicht aufgedreht, wie alle Web-Suchergebnisse zeigen mir, wie es zu tun mit Formatierungsbefehle wie Spalten in SQLPLUS (was ich nicht haben).

War es hilfreich?

Lösung

Was sind Sie die Ergebnisse zu erhalten? Die Ausgabe, die Sie eingefügt sieht aus wie es von SQL * PLUS kommen wird. Es kann sein, dass das, was Werkzeug, um die Ergebnisse zu erzeugen, verwenden hat einige Verfahren zur Herstellung des Ausgang modifiziert.

Mit dem Standard-Oracle-Ausgängen Spalten basierend auf der Breite des Titels oder die Breite der Spaltendaten, die immer breiter ist.

Wenn Sie möchten, machen Spalten kleiner müssen Sie sie entweder umbenennen oder konvertieren substr (), um Text und verwenden, um die Standardwerte zu verkleinern.

select substr(assigner_staff_id, 8) as staff_id, 
      active_flag as Flag, 
      to_char(assign_date, 'DD/MM/YY'),
      to_char(complete_date, 'DD/MM/YY'), 
      mod_date
from work where assigner_staff_id = '2096';

Andere Tipps

In Ihrer Erklärung, können Sie die Art der Ausgabe angeben Sie suchen:

select /*csv*/ col1, col2 from table;
select /*Delimited*/ col1, col2 from table;

es gibt auch andere Formate zur Verfügung, wie XML, HTML, Text, Lader, etc.

Sie können die Formatierung dieser speziellen Optionen unter Tools ändern> Einstellungen> Datenbank> Utilities> Exportieren

Seien Sie sicher, Skript ausführen, anstatt Run Statement zu wählen.

* Dies ist für Oracle SQL Developer v3.2

Was Sie mit SQL tun können, ist von Ihrem Werkzeug begrenzt. SQL Plus verfügt über Befehle, die Spalten zu formatieren, aber sie sind nicht wirklich einfach zu bedienen.

Eine schnelle Ansatz ist die Ausgabe in Excel einfügen und dort formatieren oder einfach nur die Tabelle anhängen. Einige Tools werden die Ausgabe direkt als Tabelle speichern.

Nizza Frage. Ich hatte wirklich darüber nachzudenken.

Eine Sache, die Sie tun können, ist Ihre SQL zu ändern, so dass es nur die engsten nutzbare Spalten zurückgibt.

z. (Ich bin nicht sehr heiß auf Oracle-Syntax, aber etwas Ähnliches soll funktionieren):

select substring( convert(varchar(4), assigner_staff_id), 1, 4 ) as id, 
       active_flag as act, -- use shorter column name

       -- etc. 

from work where assigner_staff_id = '2096';

Ist das sinnvoll?
Wenn Sie auf Unix / Linux dies zu tun, würde ich vorschlagen, es von der Kommandozeile ausgeführt wird und es durch einen awk-Skript kochend.

Wenn ich habe miss-verstanden, dann aktualisieren Sie bitte Ihre Frage, und ich werde eine andere mal ran:)

Wenn Sie nicht über eine Menge von Zeilen zurückgegeben ich oft Tom Kytes PRINT_TABLE Funktion

SQL> set serveroutput on 
SQL> execute print_table('select * from all_objects where rownum < 3');
OWNER                         : SYS
OBJECT_NAME                   : /1005bd30_LnkdConstant
SUBOBJECT_NAME                :
OBJECT_ID                     : 27574
DATA_OBJECT_ID                :
OBJECT_TYPE                   : JAVA CLASS
CREATED                       : 22-may-2008 11:41:13
LAST_DDL_TIME                 : 22-may-2008 11:41:13
TIMESTAMP                     : 2008-05-22:11:41:13
STATUS                        : VALID
TEMPORARY                     : N
GENERATED                     : N
SECONDARY                     : N
-----------------
OWNER                         : SYS
OBJECT_NAME                   : /10076b23_OraCustomDatumClosur
SUBOBJECT_NAME                :
OBJECT_ID                     : 22390
DATA_OBJECT_ID                :
OBJECT_TYPE                   : JAVA CLASS
CREATED                       : 22-may-2008 11:38:34
LAST_DDL_TIME                 : 22-may-2008 11:38:34
TIMESTAMP                     : 2008-05-22:11:38:34
STATUS                        : VALID
TEMPORARY                     : N
GENERATED                     : N
SECONDARY                     : N
-----------------

PL/SQL procedure successfully completed.

SQL> 

Wenn seine viele Zeilen, ich werde nur die Abfrage in SQL Developer tun und speichern als xls, businessy Typen lieben excel aus irgendeinem Grund.

Warum nicht einfach verwenden, um die "cast" Funktion?

select 
(cast(assigner_staff_id as VARCHAR2(4)) AS STAFF_ID,
(cast(active_flag as VARCHAR2(1))) AS A,
(cast(assign_date as VARCHAR2(10))) AS ASSIGN_DATE,
(cast(COMPLETE_date as VARCHAR2(10))) AS COMPLETE_DATE,
(cast(mod_date as VARCHAR2(10))) AS MOD_DATE
from work where assigner_staff_id = '2096';
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top