zeng
作者zeng·2012-02-14 09:52
数据仓库工程师·福建富士通信息软件有限公司

sqlplus中常用的格式化命令

字数 8320阅读 3247评论 0赞 0
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定义
SQL> break
break on department_id skip 1 nodup
SQL> clear break
breaks 已清除
清除当前的break定义

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广