12

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

3 回答 3

10

设置列宽以适应屏幕

例如:

column EMAIL_ADDR format a30 

其中 a 是 hte 列宽。您可以使用 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 个字符(因为我的表将其定义为 sql*plus 用于格式化输出的 varchar2(300))。

首先设置一个合适的linesize:

   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),但其中的数据要小得多,所以我将从column first_name format a15(与 last_name 相同)开始。使用电子邮件,您的列是 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

最后按要求。WRA TRUWORWRA顺便说一句,它是默认的,所以你不必使用它,但可以说我们有:

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
于 2013-01-27T13:20:55.843 回答
9

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

set wrap off 
于 2014-11-09T20:33:39.663 回答
7

尝试类似:

SET LINESIZE 120

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

于 2013-01-27T12:53:12.560 回答