问题背景:
在oracle中,使用sql*plus工具来查询数据时经常会碰到的问题就是由于查询的列过多无法在一行全部显示出来,结果看起来非常混乱。例如,查询dba_users中的全部数据,这查询结果谁看谁脑壳大。


单从查询结果中可以看出由于查询出的列比较多,显示时根本看不出具体的查询结果,只是知道查询出了22条数据。为了能够在sql*plus中显示出比较清晰的查询结果,sql*plus提供了多种设置查询结果显示的方法(吐槽:也不知道为啥不对这个进行优化)。结合实际,我们需要学习几个比较常用的设置命令。
1.1.使用column命令
使用column命令既可设置显示列的别名也可以设置显示列的格式。下面分别讲解column命令的几种用法。
(1)对列的结果查询做长度限制
以上边问题中的查询结果为例,我们能看到数据库输出的每一个字段底下的虚线长度能一定程度反应出表在创建时预设的长度大小,但是在实际的生产过程中,我们往往使用不到这么长度字段,也不想显示这么长的字段,这时候,我们就需要通过对列进行字段长度控制。
语法:
column employee_name format a20 -- 设置列宽20字符
示例:以设置列宽来进行示例

(2)使用column命令设置别名
使用column命令设置别名与在sql语句中设置别名的方法类似。
具体语法如下:
column oldname heading newname
【语法说明】
oldname:要查询表中的列名。
newname:新的列名。
示例:设置别名
下面就使用上面的命令,查询dba_users 中的用户名(username)和用户id(user_id),并把username的列名使用column命令换成“用户名”。查询结果如下图所示:

(3)使用column命令格式化数据显示的格式
在使用sql*plus查询数据时经常会遇到需要格式化显示的数字格式,在sql*plus中仍然可以使用column命令完成。
具体语法如下:
column column_name format dataformat
【语法说明】
column_name:格式化查询结果的列名。
dataformat:格式化后显示的格式。设置数据格式一般规则如下表所示。
| 格式 | 含义 |
| 9 | 代表一个数字字符 |
| 0 | 在指定的位置显示前导0或后置0 |
| $ | 美元货币符号 |
| b | 显示一个空 |
| mi | 显示负号 |
| , | 显示千分位分隔符 |
| . | 显示小数点 |
| g | 显示千分位分组符号 |
| l | 显示本地区域的货币符号 |
示例:
column salary format $999,999.99 -- 货币格式
column hire_date format a10 -- 日期列格式
column department_id format 999 -- 数字列格式
说明:使用column命令设置列的格式之后,这个列的格式是会一直保持的,除非重新设置该列的格式或者取消该列的格式。取消列的格式可以用column column_name clear命令来完成。
例如:取消对表dba_users中对列的设置

1.2.使用set命令设置格式
使用set命令设置查询结果的格式也是经常会用到的,使用set命令可以设置每一页显示的行数、设置每行显示的字符数、显示查询数据所用的时间、设置查询结果是否显示列标题、设置查询结果是否显示“已选择行数”等。
(1)查询损耗时间命令(set timing命令)
通常在执行一条sql语句的时候,我们往往是想要知道一条sql的执行时间到底花费了多久,这个时候,就可以使用set timing on
语法:
set timing on|off
示例:

(2)使用set命令设置查询结果的行数
在使用sql*plus查询数据时,经常是把所有的数据都显示在整个页面上,这就造成了页面显示数据非常乱,无法识别的问题。在sql*plus中提供对每页显示行数的设置。
具体命令如下:
set pagesize n
说明:
这里,n代表每页显示的行数,默认在每页显示的行数是24。
除了设置每页显示的行数之外,还可以设置每页之间的空格数,这样就使每页之间都有间隔,更方便数据库管理员查看数据。具体的命令如下:
具体命令如下:
set newpage n
说明:
这里,n代表每页之间间隔的空格数。
示例:设置查询结果显示的行数
下面就利用上面的两个命令完成查询结果的设置。从dba_users表中查询用户名(username),设置每页显示10行,每页之间间隔3个空格。具体操作如下图所示:

(3)设置每行显示的字符数
在设置了每页显示行数的基础上,也可以对每行显示的字符数进行设置。具体设置每行显示字符数的命令如下:
set linesize n

这里,n代表每行显示的字符数,默认显示的字符数是80。显示当前sql*plus中的linesize,使用的命令如下:
show linesize

下面利用linesize的设置完成对查询结果的每行显示字符数的设置。从dba_users表中查询用户名(username)、密码(password)、用户id(user_id),并设置每行显示的字符数是120。

(4)设置查询结果是否显示列标题
如果在保存查询结果时为了保证数据库的安全可以隐藏掉每列显示的标题。
具体命令如下:
set heading on/off
这里,on表示显示列标题;off表示不显示列标题。

以上就是oracle使用sql pius格式化输出查询结果的多种方法的详细内容,更多关于oracle sql pius格式化输出查询结果的资料请关注代码网其它相关文章!
发表评论