sqlplus中常用的格式化命令

pingley發表於2012-02-14
sqlplus中常用的格式化命令
column
sql*plus預設使用表中的列為查詢輸出的列名,或者表示式為查詢輸出的列名。
為了提高可讀性,可以使用column改變輸出顯示的列的列名.
SQL> column amsal heading 'manager''s salary'
SQL> select amid,amsal
  2  from acctmanager;
AMID     manager's salary
-------- ----------------
0001                 7000
可以使用|讓要顯示的列名分成多行。
SQL> column amsal heading 'manager''s|salary'
SQL> select amid,amsal
  2  from acctmanager;
          manager's
AMID         salary
-------- ----------
0001           7000
SQL> column first_name format a12
SQL> column lastt_name format a12
SQL> select first_name,last_na
  2  from employees;
FIRST_NAME   LAST_NAME
------------ -----------------
Steven       King
Neena        Kochhar
Lex          De Haan
Alexander    Hunold
Bruce        Ernst
David        Austin
Valli        Pataballa
Diana        Lorentz
設定first_name,last_name欄輸出的寬度。
SQL> column amsal format $99,990 //對數值的輸出進行格式化
SQL> /
AMID        AMSAL
-------- --------
0001       $7,000
cloumn設定的列的標題會一直有效,直到更改該列的標題,或者退出sql*plus
與使用 column column_name clear命令清除設定。
也可以使用clear columns 清除所有列的標題設定。
SQL> clear columns
columns 已清除
numwidth:
輸出型別域的長度,預設值是10
SQL> show numwidth
numwidth 10
SQL> set numwidth 5
SQL> select 4444 from dual;
 4444
-----
 4444
SQL> select 44445 from dual;
44445
-----
44445
SQL> select 444456 from dual; //numwidth長度不夠將會顯示的結果
444456
------
 #####   
SQL> select 55555578 from dual;
55555578
--------
 5.6E+07
當numwidth長度不夠但是數值達到千萬級的時候會使用科學計數法。
注意:當用column設定數值的顯示以後,numwith的設定對該列就無效了。
SQL> show numwidth
numwidth 5
SQL> column amsal format $999
SQL> /
AMID     AMSAL
-------- -----
0001     #####
linesize:
預設值是80,設定一行顯示的字元數。
SQL> show linesize
linesize 80
SQL> set linesize 400
SQL> select * from employees;
這樣employees表中的所有的列都可以顯示在同一行中。
pagesize:
一頁顯示多少行。預設值是14.該值設定為0將不會分頁。
SQL> show pagesize
pagesize 14
SQL> set pagesize 0
underscore:
預設是'-',設定標題下面的下劃線的樣式。
SQL> show underline
underline "-" (hex 2d)
SQL> set underline *
SQL> select first_name,last_name,salary
  2  from employees;
FIRST_NAME                               LAST_NAME                                          SALARY
**************************************** ************************************************** ******
Steven                                   King                                                30000
Neena                                    Kochhar                                             17000
Lex                                      De Haan                                             17000
Alexander                                Hunold                                               9000
Bruce                                    Ernst                                                6000
David                                    Austin                                               4800
Valli                                    Pataballa                                            4800
Diana                                    Lorentz                                              4200
Nancy                                    Greenberg                                           12000
Daniel                                   Faviet                                               9000
John                                     Chen                                                 8200
SQL> set underline '-'   //改回預設值。
break:
設定格式改變的樣式,以及出現的條件。
break on column_name
消除order by 子句中column_name中的重複值。
SQL> select department_id,employee_id,salary
  2  from employees
  3  where salary>15000
  4  order by department_id;
DEPARTMENT_ID EMPLOYEE_ID     SALARY
------------- ----------- ----------
           90         100      30000
           90         102      17000
           90         101      17000
SQL> break on department_id
SQL> /
DEPARTMENT_ID EMPLOYEE_ID     SALARY
------------- ----------- ----------  //重複值(90)消除了.
           90         100      30000
                      102      17000
                      101      17000
break on column_name skip n 
當column_name中的值改變的時候就插入n行空白行.並消除column_name
中的重複值。
SQL> break on department_id skip 1
SQL> select department_id,employee_id,salary
  2  from employees
  3  where salary>12000
  4  order by department_id;
DEPARTMENT_ID EMPLOYEE_ID     SALARY 
------------- ----------- ----------
           20         201      13000

           80         146      13500   
                      145      14000  

           90         101      17000
                      100      30000
                      102      17000                       
使用break命令列出當前的break定義,每一個新定義的break都會覆蓋以前定義的
break。
SQL> break
break on department_id skip 1 nodup
SQL> clear break
breaks 已清除
清除當前的break定義

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-716204/,如需轉載,請註明出處,否則將追究法律責任。

相關文章