oracle – 如何在命令提示符中美化来自SELECT查询的输出?
我在命令提示符中运行了简单的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>设置列宽以适合屏幕 例如: column EMAIL_ADDR format a30 其中a是列宽.您可以使用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)但它们中的数据要小得多,所以我从列first_name格式a15开始(对于last_name也是如此).使用电子邮件,您的列是varchar2(100),但最大大小的输出是25个字符,因此将列电子邮件格式设置为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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |