Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何在命令提示下美化来自SELECT查询的输出?_Oracle_Sqlplus - Fatal编程技术网

Oracle 如何在命令提示下美化来自SELECT查询的输出?

Oracle 如何在命令提示下美化来自SELECT查询的输出?,oracle,sqlplus,Oracle,Sqlplus,我在命令提示符下运行了简单的select查询,但是输出行不是一行出现的。见下文: SQL> set pagesize 2000 SQL> select * from xtern_empl_rpt ; EMP LAST_NAME --- -------------------------------------------------- FIRST_NAME SSN -------------------

我在命令提示符下运行了简单的
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>
尝试以下方法:

SET LINESIZE 120

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

设置列宽以适合屏幕

例如:

其中a是列宽。您可以使用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使用varchar2(300)格式化输出),读取输出有点困难

首先设置适当的线宽:

   SQL> set linesize 100 
现在,让我们设置列,使其适合一行(线宽应大于总列宽):

因此,现在柱很容易安装到一个大小合理的终端上

在您的例子中,
first\u name
last\u name
是varchar2(50),但其中的数据要小得多,因此我从
列first\u name格式a15
开始(last\u name相同)。对于电子邮件,您的列是varchar2(100),但最大大小的输出是25个字符,因此将
列电子邮件格式a25
作为初学者

如果您这样做了,您应该得到输出(如果linesize足够高),如下所示:

最后,按照要求
WRA
TRU
WOR
<代码>WRA是默认值,因此您不必使用它,但假设我们有:

SQL> select * from test;

A
--------------------------------------
THIS IS A SIMPLE WRAPPING TEST
但我想将其格式化为10个字符宽:

<代码> WRA意味着只需在10个字符上砍字符串,而不管我们是否在单词的中间。如果我们只想在单词结尾处中断(可能的话,单词>10仍然需要中断):

现在,输出在字边界处中断,不一定在10个字符处中断

如果我们只需要前10个字符而不需要换行,我们可以使用
TRU

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

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

这将解决您的问题:

set wrap off 

对不起,我没明白你的意思!你能解释得更清楚一点吗?可能是用我的例子中的语法?没问题,你是想帮我!我就这些。您还可以帮助我了解
WRA
TRU
WOR
?@VBSlover添加了一个示例。好的,这是可行的,但是如何为所有VARCHAR2列设置它?如果您将输出发送到一个文件,您应该会发现每个输出行都显示在一行上(按照最初的要求)。如果所需的行大小大于控制台的最大宽度(例如,如果控制台显示为80个字符宽,但输出需要120个字符宽),则输出永远不能显示在一行上-没有足够的空间容纳它。好的,那么如何将输出从控制台发送到特定文件?请告诉我需要使用哪些命令来实现此目的?使用
SPOOL
filename将输出从控制台发送到指定的文件名,使用
SPOOL OFF
停止输出到文件名-有关SPOOL的详细信息,请参阅,以及有关Oracle 10.2的SQLPlus参考指南。
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
SQL> select * from test;

A
--------------------------------------
THIS IS A SIMPLE WRAPPING TEST
QL> col a format a10 WRA
SQL> select * from test;

A
----------
THIS IS A
SIMPLE WRA
PPING TEST
SQL> col a format a10 WOR
SQL> select * from test;

A
----------
THIS IS A
SIMPLE
WRAPPING
TEST
SQL> col a format a10 TRU
SQL> select * from test;

A
----------
THIS IS A
set wrap off