设为首页 收藏本站
查看: 1001|回复: 0

[经验分享] Oracle sqlplus设置显示格式命令详解

[复制链接]

尚未签到

发表于 2016-8-10 06:12:52 | 显示全部楼层 |阅读模式
  设置列格式的相关命令
  
  1. 改变列的显示长度
COLUMN column_name FOR[MAT] format
  备注: 
  注意该命令将保持一直生效直至输入了一个新的格式值或者退出了SQL*PLUS, 其中字段类型可以为Char, Varchar2, varchar。
  如果SQL*PLUS的WARP变量的值被设置为"开"(默认值), 那么字段的内容将会在format命令规定的长度处折行, 否则的话超过规定长度的后续字符将会被截取。
  如果你有多个相同显示属性的列需要设置,那么使用column 字段名 like 你想要复制显示属性的字段heading 字段名。注意如果不加上后面heading 字段名那么复制的时候连字段名都会复制过去,显然不适合一般要求。
  2. 格式化NUMBER类型列的显示
SQL> COLUMN SAL FORMAT $99,990
  3. 显示列值时,如果列值为NULL值,用text值代替NULL值
COMM NUL[L] text
SQL>COL COMM NUL[L] text
  4. 设置一个列的回绕方式
COLUMN WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
  备注:此命令常和format合用,当列值过长时可以使用该命令格式话输出, wrapped根据字符长度控制, word_wrapped根据单词控制, truncated则直接截取等长字符。
  5. 清空当前所有列的设置,恢复成默认格式
  CLEAR COLUMNS
  
  下面我们来看一下这些命令的综合应用:
  
SQL> desc testtable;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 NAME                                               VARCHAR2(20)
 REMARK                                             VARCHAR2(50)
 SALARY                                             NUMBER
  SQL> select * from testtable;
  ID NAME
---------- ----------------------------------------
REMARK
--------------------------------------------------------------------------------
    SALARY
----------
         1 paul
  99999
  
现在我们要对这个输出进行修改,包括:
  ①分别设置输出列的长度为2、10、6、8
②分别设置输出列的列名居中
③格式化Salary列的值为$999,999
④将Remark列的空值替换为字符串User description
⑤设置Remark列的回绕方式为按单词回绕
  下面我们来看看这个SQL*PLUS命令应该如何写:
  
SQL> column ID justify center
SQL> column Name justify center format a10
SQL> column Remark justify center format a6 NULL 'User description' word_wrapped
SQL> column salary justify right format $999,999
SQL> select * from testtable;
  ID        NAME    REMARK    SALARY
---------- ---------- ------ ---------
         1 paul       User     $99,999
                      descri
                      ption
  
看看其中的SQL语句:
  
Column Remark justify center format a6 NULL 'User description' word_wrapped。
  
该句设置了:列名居中显示、列的长度为6个字符、空值用'User description'代替、按单词回绕(所以是在User处折行,而不是在User d出折行,虽然列的长度可以为6)
  设置页面及行格式的相关命令
  
1.设置一行可以容纳的字符数
SQL> SET LIN[ESIZE] {80|n}
如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。
  2.设置一页有多少行数
SQL> SET PAGES[IZE] {24|n}
如果设为0,则所有的输出内容为一页并且不显示列标题
  3.设置页与页之间的分隔
SQL> SET NEWP[AGE] {1|n|NONE}
当set newpage 0 时,会在每页的开头有一个小的黑方框。
当set newpage n 时,会在页和页之间隔着n个空行。
当set newpage none 时,会在页和页之间没有任何间隔。
  备注:以上三个命令经常合用, 首先设置每行显示的最大长度, 再设置每页有多少行, 最后设置页间距. 如果要获取较好格式的话可以配合Column format命令格式化每个字段的长度.
  
下面我们来实地查看一下上述命令在结果输出中的应用
  SQL> select * from testtable;
  ID NAME       REMARK
---------- ---------- --------------------------------------------------
REG_DATE       SALARY
---------- ----------
         1 paul lin
07-6月 -08       5500
  2 bob lin    common user
06-6月 -08       6500
  
SQL>
  下面我们要做的就是:
  ①调整页面最大显示长度为200
②设置每页只显示一条记录
③每页之间间隔两个空
  SQL> set linesize 200 pagesize 1 newpage 2;
SQL>
SQL> /
  
         1 paul lin                                                      07-6月 -08       5500
  
         2 bob lin    common user                                        06-6月 -08       6500
  SQL>
  可以看到页面的输出并不让人满意(标题和虚线都没有了),现在我们使用一种令人比较满意的设置:
  
SQL> set linesize 200 pagesize 999 newpage;
SQL>
SQL>
SQL> /
        ID NAME       REMARK                                             REG_DATE       SALARY
---------- ---------- -------------------------------------------------- ---------- ----------
         1 paul lin                                                      07-6月 -08            5500
         2 bob lin    common user                                 06-6月 -08            6500
  SQL>
  实际上该命令的最后设置newpage会在每页的前面加上一个黑色的小方框(在这里不能显示),以提示这是新一页的开始,假如你不想进行任何的提示那么只要设置newpage为none就可以了(你所看到的输出和现在的一模一样)。
  至于linesize的设置则要考虑屏幕和打印机的大小了。
  
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huozhicheng/archive/2010/08/27/5842433.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-255393-1-1.html 上篇帖子: oracle常用方法之行转列 下篇帖子: oracle 监听器详解引文
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表