oracle – 如何在命令提示符中美化来自SELECT查询的输出?

前端之家收集整理的这篇文章主要介绍了oracle – 如何在命令提示符中美化来自SELECT查询的输出?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在命令提示符中运行了简单的select查询,但输出行不在一行中.见下文:
sql> set pagesize 2000
sql> select * from xtern_empl_rpt ;

EMP LAST_NAME
--- --------------------------------------------------
FIRST_NAME                                         SSN
-------------------------------------------------- ---------
EMAIL_ADDR
--------------------------------------------------------------------------------

YEARS_OF_SERVICE
----------------
001 Hutt
Jabba                                              896743856
jabba@thecompany.com
              18

002 Simpson
Homer                                              382947382
homer@thecompany.com
              20

003 Kent
Clark                                              082736194
superman@thecompany.com
               5

004 Kid
Billy                                              928743627
billythkid@thecompany.com
               9

005 Stranger
Perfect                                            389209831
nobody@thecompany.com
              23

006 Zoidberg
Dr                                                 094510283
crustacean@thecompany.com
               1


6 rows selected.

sql>

你能帮我把每一行写成一行吗?

编辑

我试过下面,但仍然没有美化.

sql> SET LINESIZE 4000
sql> select * from xtern_empl_rpt ;

EMP LAST_NAME                                          FIRST_NAME
                          SSN       EMAIL_ADDR
                                                         YEARS_OF_SERVICE
--- -------------------------------------------------- -------------------------
------------------------- --------- --------------------------------------------
-------------------------------------------------------- ----------------
001 Hutt                                               Jabba
                          896743856 jabba@thecompany.com
                                                                       18
002 Simpson                                            Homer
                          382947382 homer@thecompany.com
                                                                       20
003 Kent                                               Clark
                          082736194 superman@thecompany.com
                                                                        5
004 Kid                                                Billy
                          928743627 billythkid@thecompany.com
                                                                        9
005 Stranger                                           Perfect
                          389209831 nobody@thecompany.com
                                                                       23
006 Zoidberg                                           Dr
                          094510283 crustacean@thecompany.com
                                                                        1

6 rows selected.

sql>
设置列宽以适合屏幕

例如:

column EMAIL_ADDR format a30

其中a是列宽.您可以使用WRA来包装列
例如

column EMAIL_ADDR format a30 WRA

或TRU截断,WOR打破字边界

例如:

sql> select * from emp;

        ID FIRST_NAME
---------- ------------------------------
LAST_NAME
------------------------------
EMAIL_ADDR
--------------------------------------------------
         1 Dazza
Smith
d_dazzal@dazzal.com

所以输出有点棘手,因为email_addr被填充到300个字符(因为我的表定义为varchar2(300),sql * plus用来格式化输出).

首先设置一个合适的lineize:

sql> set linesize 100

现在让我们设置列,使它们适合一行(linesize应该大于总col宽度):

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                d_dazzal@dazzal.com

所以现在这些列很容易适合合理大小的终端.

在你的情况下,first_name和last_name是varchar2(50)但它们中的数据要小得多,所以我从列first_name格式a15开始(对于last_name也是如此).使用电子邮件,您的列是varchar2(100),但最大大小的输出是25个字符,因此将列电子邮件格式设置为a25作为启动器.

如果你这样做,你应该得到输出(如果lineize足够高),如:

sql> select * from xtern_empl_rpt ;

EMP LAST_NAME       FIRST_NAME     SSN       EMAIL_ADDR                YEARS_OF_SERVICE
--- --------------- -------------- --------- ------------------------- ----------------
001 Hutt            Jabba          896743856 jabba@thecompany.com      18

最后按要求. WRA TRU和WOR.顺便说一句,WRA是默认的,所以你不必使用它但是我们说:

sql> select * from test;

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

但我想将其格式化为10个字符宽度:

小号

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

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

WRA意味着只需将字符串切成10个字符,无论我们是否在一个单词的中间.如果我们想要在单词结尾处打破(在可能的情况下,单词> 10仍然需要打破):

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

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

现在输出在字边界处被打破,而不一定在10个字符处.

如果我们只想要前10个字符并且没​​有换行,我们可以使用TRU:

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

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

猜你在找的Oracle相关文章