Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como embelezar a saída proveniente da consulta SELECT no prompt de comando?


defina as larguras das colunas para caber na tela

por exemplo:
column EMAIL_ADDR format a30 

onde a é a largura da coluna. você pode usar o WRA para envolver o columneg
column EMAIL_ADDR format a30 WRA

ou TRU para truncar, WOR quebrar os limites das palavras

por exemplo:
SQL> select * from emp;

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

portanto, a saída é um pouco complicada de ler, pois email_addr foi preenchido com 300 caracteres (como minha tabela definiu como varchar2 (300) que o sql * plus usa para formatar a saída).

primeiro defina um tamanho de linha apropriado:
   SQL> set linesize 100 

agora vamos definir as colunas para que caibam em uma linha (o tamanho da linha deve ser maior que o total de larguras das colunas):
   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]

então agora as colunas se encaixam facilmente em um terminal de tamanho razoável.

no seu caso first_name e last_name são varchar2(50), mas os dados neles são muito menores, então eu começaria com column first_name format a15 (o mesmo para last_name). com email, sua coluna é varchar2(100), mas a saída de tamanho máximo foi de 25 caracteres, então coloque column email format a25 para um iniciante.

se você fez isso, você deve obter uma saída (se o tamanho da linha for alto o suficiente) como:
SQL> select * from xtern_empl_rpt ;

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

finalmente conforme solicitado. WRA TRU e WOR . WRA é padrão a propósito, então você não precisa usá-lo, mas digamos que tínhamos:
SQL> select * from test;

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

mas eu queria formatar isso como 10 caracteres de largura:

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

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

o WRA significa apenas cortar a string em 10 caracteres, independentemente de estarmos no meio de uma palavra ou não. se quiséssemos quebrar APENAS em terminações de palavras (onde possível, uma palavra> 10 ainda precisa quebrar):
SQL> col a format a10 WOR
SQL> select * from test;

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

agora a saída é quebrada nos limites das palavras e não necessariamente em 10 caracteres.

se quiséssemos apenas os primeiros 10 caracteres e sem quebra de linha, poderíamos usar TRU :
SQL> col a format a10 TRU
SQL> select * from test;

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