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