sql >> Databasteknik >  >> RDS >> Oracle

Hur förfinar man utdata som kommer från SELECT-frågan i kommandotolken?

ställ in dina kolumnbredder så att de passar på skärmen

t.ex.:

column EMAIL_ADDR format a30 

där a är kolumnbredden. du kan använda WRA för att radbryta kolumnen

column EMAIL_ADDR format a30 WRA

eller TRU för att trunkera, WOR att bryta på ordgränser

till exempel:

SQL> select * from emp;

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

så utdata är lite knepigt att läsa eftersom email_addr var utfylld till 300 tecken (som min tabell hade den definierad som varchar2(300) som sql*plus använder för att formatera utdata).

ställ först in en lämplig radstorlek:

   SQL> set linesize 100 

Låt oss nu ställa in kolumnerna så att de passar på en rad (linjestorleken bör vara större än den totala kolumnbredden):

   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]

så nu passar kolonnerna lätt på en terminal av rimlig storlek.

i ditt fall first_name och last_name är varchar2(50) men data i dem är mycket mindre, så jag skulle börja med column first_name format a15 (samma för efternamn). med e-post är din kolumn varchar2(100) men maxstorleken för utdata var 25 tecken, så skriv column email format a25 till att börja med.

om du gjorde det, bör du få utdata (om linjestorleken är tillräckligt hög) som:

SQL> select * from xtern_empl_rpt ;

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

slutligen som begärt. WRA TRU och WOR . WRA är standard förresten, så du behöver inte använda det men låt oss säga att vi hade:

SQL> select * from test;

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

men jag ville formatera detta som 10 teckens bredd:

S

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

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

WRA betyder att bara hugga strängen med 10 tecken, oavsett om vi är mitt i ett ord eller inte. om vi ENDAST ville bryta på ordändelser (där det är möjligt eftersom ett ord> 10 fortfarande måste bryta):

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

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

nu är utdata bruten vid ordgränser och inte nödvändigtvis vid 10 tecken.

om vi bara ville ha de första 10 tecknen och ingen radomslutning skulle vi kunna använda TRU :

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

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


  1. skapa tabell med sequence.nextval i oracle

  2. Blockera, blockera, blockera på DBAs dörr med SQL Server-blockering

  3. Hur många poster kan jag lagra i 5 MB PostgreSQL på Heroku?

  4. JSON_CONTAINS() Exempel i MySQL