Oracle SQL*PLUS命令应用 设置显示列格式的相关命令

设置列格式的相关命令

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的设置则要考虑屏幕和打印机的大小了。

实例 - 改变sql/plus中内容宽度

SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 17-12月-80            800
        20

      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300
        30

      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500
        30


     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7566 JONES      MANAGER         7839 02-4月 -81           2975
        20

      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400
        30

      7698 BLAKE      MANAGER         7839 01-5月 -81           2850
        30


     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 09-6月 -81           2450
        10

      7788 SCOTT      ANALYST         7566 19-4月 -87           3000
        20

      7839 KING       PRESIDENT            17-11月-81           5000
        10


     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0
        30

      7876 ADAMS      CLERK           7788 23-5月 -87           1100
        20

      7900 JAMES      CLERK           7698 03-12月-81            950
        30


     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7902 FORD       ANALYST         7566 03-12月-81           3000
        20

      7934 MILLER     CLERK           7782 23-1月 -82           1300
        10


已选择14行。

SQL> set linesize 200 pagesize 30 newpage 2;
SQL> select * from emp;


     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80            800                    20
      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30
      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30
      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30
      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
      7900 JAMES      CLERK           7698 03-12月-81            950                    30
      7902 FORD       ANALYST         7566 03-12月-81           3000                    20
      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10

已选择14行。

SQL>


赞(52) 打赏
未经允许不得转载:优客志 » 数据库
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏