sql >> Databáze >  >> RDS >> Oracle

Jak pretify výstup pocházející z dotazu SELECT v příkazovém řádku?

nastavte šířku sloupců tak, aby se vešly na obrazovku

např.:

column EMAIL_ADDR format a30 

kde a je šířka sloupce. můžete použít WRA k zabalení columneg

column EMAIL_ADDR format a30 WRA

nebo TRU pro zkrácení WOR prolomit hranice slov

například:

SQL> select * from emp;

        ID FIRST_NAME
---------- ------------------------------
LAST_NAME
------------------------------
EMAIL_ADDR
--------------------------------------------------
         1 Dazza
Smith
[email protected]

takže výstup je trochu složitější číst, protože email_addr byl vyplněn na 300 znaků (má tabulka to měla definované jako varchar2(300), které sql*plus používá k formátování výstupu).

nejprve nastavte vhodnou velikost řádku:

   SQL> set linesize 100 

nyní umožňuje nastavit sloupce tak, aby se vešly na jeden řádek (velikost řádku by měla být větší než celková šířka sloupců):

   SQL> column email_addr format a30 
   SQL> column last_name format a20 
   SQL> column first_name format a20 
   SQL> select * from emp;

            ID FIRST_NAME           LAST_NAME            EMAIL_ADDR
    ---------- -------------------- -------------------- ------------------------------
             1 Dazza                Smith                [email protected]

takže nyní se sloupky snadno vejdou na přiměřeně velký terminál.

ve vašem případě first_name a last_name jsou varchar2(50), ale data v nich jsou mnohem menší, takže bych začal s column first_name format a15 (totéž pro příjmení). u e-mailu je váš sloupec varchar2(100), ale maximální velikost výstupu byla 25 znaků, takže vložte column email format a25 pro začátek.

pokud jste to udělali, měli byste získat výstup (pokud je velikost řádků dostatečně vysoká) jako:

SQL> select * from xtern_empl_rpt ;

EMP LAST_NAME       FIRST_NAME     SSN       EMAIL_ADDR                YEARS_OF_SERVICE
--- --------------- -------------- --------- ------------------------- ----------------
001 Hutt            Jabba          896743856 [email protected]      18

konečně podle požadavku. WRA TRU a WOR . WRA je mimochodem výchozí, takže ho nemusíte používat, ale řekněme, že jsme měli:

SQL> select * from test;

A
--------------------------------------
THIS IS A SIMPLE WRAPPING TEST

ale chtěl jsem to naformátovat na šířku 10 znaků:

S

QL> col a format a10 WRA
SQL> select * from test;

A
----------
THIS IS A
SIMPLE WRA
PPING TEST

WRA znamená prostě sekat řetězec na 10 znaků, bez ohledu na to, zda jsme uprostřed slova nebo ne. pokud bychom chtěli zalomit POUZE na koncích slov (pokud je to možné, protože slovo> 10 stále potřebuje zalomit):

SQL> col a format a10 WOR
SQL> select * from test;

A
----------
THIS IS A
SIMPLE
WRAPPING
TEST

nyní je výstup přerušen na hranicích slov a ne nutně na 10 znacích.

pokud bychom chtěli pouze prvních 10 znaků a žádné zalamování řádků, mohli bychom použít TRU :

SQL> col a format a10 TRU
SQL> select * from test;

A
----------
THIS IS A


  1. Jak získat definici tabulky v Oracle?

  2. Příklady TAN() v SQL Server

  3. Jak získat druhý největší nebo třetí největší záznam z tabulky

  4. Seskupit podle hodnot, které jsou v pořadí