- Oracle 11g從入門到精通(第2版) (軟件開發視頻大講堂)
- 明日科技
- 1820字
- 2020-11-28 15:54:52
3.4 格式化查詢結果
視頻講解:光盤\TM\lx\3\格式化查詢結果.mp4
為了在SQL*Plus環境中生成符合用戶需要規范的報表,SQL*Plus工具提供了多個用于格式化查詢結果的命令,使用這些命令可以實現設置列的標題、定義輸出值的顯示格式和顯示寬度、為報表增加頭標題和底標題、在報表中顯示當前日期和頁號等功能。下面就對常用的格式化命令進行講解。
3.4.1 COLUMN命令
該命令可以實現格式化查詢結果、設置列寬度、重新設置列標題等功能。其語法格式如下:
COL[UMN] [column_name | alias | option]
column_name:用于指定要設置的列的名稱。
alias:用于指定列的別名,通過它可以把英文列標題設置為漢字。
option:用于指定某個列的顯示格式,option選項的值及其說明如表3.3所示。
表3.3 option選項的值及其說明

如果在關鍵字column后面未指定任何參數,則column命令將顯示SQL*Plus環境中所有列的當前定義屬性;如果在column后面指定某個列名,則顯示指定列的當前定義屬性。接下來將對表3.3中的常用option選項值進行舉例說明。
1. FORMAT選項
該選項用于格式化指定的列,需要在FORMAT關鍵字的后面跟一個掩碼格式。
【例3.19】 使用FORMAT選項格式化scott.emp表中的員工工資為$999,999.00格式,代碼如下(實例位置:光盤\TM\sl\3\7)。
SQL> col sal format $999,999.00 SQL> select empno, ename, sal from scott.emp;
本例運行結果如圖3.10所示。

圖3.10 格式化員工工資
2. HEADING選項
該選項用于定義列標題,比如,許多數據表或視圖的列名都為英文形式,可以使用此選項將英文形式的列標題顯示為中文形式。
【例3.20】 使用HEADING選項把scott.emp表中的empno、ename、sal三個列名轉換為中文形式,代碼如下(實例位置:光盤\TM\sl\3\8)。
SQL>col empno heading雇員編號 SQL>col ename heading雇員姓名 SQL>col sal heading雇員工資 SQL> select empno, ename, sal from scott.emp;
本例運行結果如圖3.11所示。

圖3.11 把列名轉換為中文形式
3. NULL選項
在該選項的后面指定一個字符串,如果列的值為null,則用該字符串代替空值。
【例3.21】 使用NULL選項把scott.emp表中comm列值為null顯示成“空值”字符串,代碼如下(實例位置:光盤\TM\sl\3\9)。
SQL> col comm null ’空值’ SQL> select empno, ename, comm from scott.emp where comm is null;
本例運行結果如圖3.12所示。

圖3.12 把null顯示成“空值”字符串
4. ON|OFF選項
該選項用于控制定義的顯示屬性的狀態,OFF表示定義的所有顯示屬性都不起作用,默認為ON。
【例3.22】設置scott.emp表中的sal列(工資列)的格式為$999,999.00,但同時使用OFF選項取消定義的列屬性狀態,輸出結果顯示sal列沒有被格式化,代碼如下(實例位置:光盤\TM\sl\3\10)。
SQL> col sal format $999,999.00 SQL> col sal off SQL> select empno, ename, sal from scott.emp;
本例運行結果如圖3.13所示。

圖3.13 使用OFF選項取消定義的列屬性狀態
5. WRAPPED/WORD_WRAPPED選項
這兩個選項都用于實現折行的功能,WRAPPED選項按照指定長度折行,WORD_WRAPPED選項按照完整字符串折行。
【例3.23】 使用WRAPPED選項實現按照指定長度折行,代碼及運行結果如下。
SQL> select col1 from test; COL1 ------------------- HOW ARE YOU? 已選擇1行 SQL> column col1 format a5 SQL> column col1 wrapped SQL> select col1 from test; COL1 ------------------ HOW A RE YO U?
【例3.24】 使用WORD_WRAPPED選項按照完整字符串折行,代碼及運行結果如下。
SQL> col col1 word_wrapped COL1 ------------------ HOW ARE YOU?
3.4.2 TTITLE和BTITLE命令
在SQL*Plus環境中,執行SQL語句后的顯示結果在默認情況下包括列標題、頁分割線、查詢結果和行數合計等內容,用這些默認的輸出信息打印報表,并不十分美觀。如果能為整個輸出結果設置報表頭(即頭標題)、為每頁都設置頁標題和頁碼、為整個輸出結果設置報表尾(如打印時間或打印人員),那么使用這樣的輸出結果打印報表一定非常美觀。為了實現這些功能,SQL*Plus工具提供了TTITLE和BTITLE命令,這兩個命令分別用來設置打印時每頁的頂部和底部標題。其中,TTITLE命令的語法格式如下:
表3.4 printspec選項的值及其說明

TTI[TLE] [printspec [text|variable] ...] | [OFF|ON]
printspec:用來作為頭標題的修飾性選項。printspec選項的值及其說明如表3.4所示。
text:用于設置輸出結果的頭標題(即報表頭文字)。
variable:用于在頭標題中輸出相應的變量值。
OFF:表示禁止打印頭標題。
ON:表示允許打印頭標題。
注意
BTITLE的語法格式與TTITLE的語法格式相同。如果在TTITLE或BTITLE命令后沒有任何參數,則顯示當前的TTITLE或BTITLE的定義。
【例3.25】 打印輸出scott.salgrade數據表中的所有記錄,并要求為每頁設置頭標題(報表名稱)和底標題(打印時間和打印人),代碼如下(實例位置:光盤\TM\sl\3\11)。
SQL> set pagesize 8 SQL>ttitle left' 銷售情況排行表’ SQL>btitle left’打印日期:2011年9月20日 打印人:東方’ SQL> select * from scott.salgrade;
本例運行結果如圖3.14所示。

圖3.14 顯示打印時間和打印人
在上面的例子中,頭標題“銷售情況排行表”是一個固定的字符串,另外,頭標題也可以使用變量來輸出。
【例3.26】 打印輸出scott.salgrade數據表中的所有記錄,并要求頭標題和底標題都使用define命令定義的變量輸出,代碼如下(實例位置:光盤\TM\sl\3\12)。
SQL> set pagesize 8 SQL>define varT=' 雇員信息表’ SQL> define varB=’操作員:東方’ SQL> ttitle left varT SQL> btitle left varB SQL> select empno, ename, job from scott.emp;
本例運行結果如圖3.15所示。

圖3.15 輸出頭標題和底標題
上面代碼中所設置的頭標題和底標題的有效期直到本次會話結束后才終止。若要手動清除這些設置,可以分別使用ttitle off命令和btitle off命令取消頭標題和底標題的設置信息。
- 計算思維與算法入門
- 高手是如何做產品設計的(全2冊)
- Drupal 8 Blueprints
- Cocos2d-x游戲開發:手把手教你Lua語言的編程方法
- C和C++安全編碼(原書第2版)
- MATLAB 2020 從入門到精通
- Java程序員面試算法寶典
- Implementing Cisco Networking Solutions
- Android底層接口與驅動開發技術詳解
- Mastering ROS for Robotics Programming
- Mastering React
- Distributed Computing in Java 9
- Photoshop智能手機APP界面設計
- DB2SQL性能調優秘笈
- Clojure High Performance Programming(Second Edition)