oracle 如何修饰来自命令提示符中的SELECT查询的输出?

uz75evzq  于 2023-02-18  发布在  Oracle
关注(0)|答案(4)|浏览(180)

我在命令提示符下运行了简单的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>
q8l4jmvw

q8l4jmvw1#

设置列宽以适应屏幕
例如:

column EMAIL_ADDR format a30

其中a是列宽.你可以使用wra来 Package 列例如

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使用它来格式化输出),读取输出有点困难。
首先设置适当的线大小:

SQL> set linesize 100

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

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_namelast_name是varchar2(50)的,但它们中的数据要小得多,所以我将从column first_name format a15开始(与last_name相同)。对于email,您的列是varchar2(100),但最大大小的输出是25个字符,因此将column email format a25作为开始。
如果这样做,应该会得到如下输出(如果linesize足够大):

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

最后根据要求。WRATRUWORWRA是默认的方式,所以你不必使用它,但让我们说,我们有:

SQL> select * from test;

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

但我想格式化为10字符宽度:
S型

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
t98cgbkg

t98cgbkg2#

这应该可以解决您的问题:

set wrap off
vyu0f0g1

vyu0f0g13#

尝试以下内容:

SET LINESIZE 120

(将120调整到所需的最大宽度。)

bvjxkvbb

bvjxkvbb4#

在执行选择查询之前,执行以下查询以获取CSV格式的选择查询输出。然后,输出将以CSV格式显示。
设置标记csv打开;

相关问题