我在命令提示符下运行了简单的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>
答案 0 :(得分:8)
设置列宽以适合屏幕
例如:
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个字符(因为我的表定义为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),但其中的数据要小得多,所以我从column first_name format a15
开始(对于last_name也是如此)。使用电子邮件,您的列是varchar2(100),但最大大小的输出是25个字符,因此将column email format 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
答案 1 :(得分:6)
这可以解决您的问题:
set wrap off
答案 2 :(得分:4)
尝试类似:
SET LINESIZE 120
(将120
调整为所需的最大宽度。)