今天建了一张视图,用于查看商品的折扣率,却发现折扣率在SQLPLUS中居然有显示问题,而在其他软件上却没有,于是研究了一下SQLPLUS的数字显示问题,分享一下。
一、问题描述
SQL> select * from retail_d;
ID BILLDATE QTY TOT_AMT_LIST TOT_AMT_ACTUAL DISCOUNT
---------- -------- ---------- ------------ -------------- ----------
1001 20170501 3 12000 10000 .833333333
1002 20170502 2 11000 9000 .818181818
1003 20170503 1 10000 8000 .8
1004 20160501 5 10000 8000 .8
1005 20160502 5 15000 8000 .533333333
1006 20160503 1 5000 5000 1
1007 20170401 2 10000 5000 .5
1008 20170402 2 10000 5000 .5
1009 20170403 2 10000 10000 1
2005 20170405 1 5000 5000 1
2007 20170506 1 5000 5000 1
二、解决思路
由于在其他软件上显示正常,且这是一列虚列,所以一定不是数据问题。百度了一下,居然有人说转成string然后拼接个0,感觉不太靠谱,所以继续研究。
先看一下所有的小数的显示情况:
SQL> select 0.5 as id from dual;
id
----------
.5
可以确定这一定是显示问题了
三、解决问题
SQL> col id for 0.9
SQL> /
ID
----
0.5
使用COL 指令,修改列的显示格式
SQL> select * from retail_d;
ID BILLDATE QTY TOT_AMT_LIST TOT_AMT_ACTUAL DISCOUNT
---- -------- ---------- ------------ -------------- ----------
#### 20170501 3 12000 10000 .833333333
#### 20170502 2 11000 9000 .818181818
#### 20170503 1 10000 8000 .8
#### 20160501 5 10000 8000 .8
#### 20160502 5 15000 8000 .533333333
#### 20160503 1 5000 5000 1
#### 20170401 2 10000 5000 .5
#### 20170402 2 10000 5000 .5
#### 20170403 2 10000 10000 1
#### 20170405 1 5000 5000 1
#### 20170506 1 5000 5000 1
SQL> col discount for 0.09
SQL> select * from retail_d;
ID BILLDATE QTY TOT_AMT_LIST TOT_AMT_ACTUAL DISCOUNT
---- -------- ---------- ------------ -------------- --------
#### 20170501 3 12000 10000 0.83
#### 20170502 2 11000 9000 0.82
#### 20170503 1 10000 8000 0.80
#### 20160501 5 10000 8000 0.80
#### 20160502 5 15000 8000 0.53
#### 20160503 1 5000 5000 1.00
#### 20170401 2 10000 5000 0.50
#### 20170402 2 10000 5000 0.50
#### 20170403 2 10000 10000 1.00
#### 20170405 1 5000 5000 1.00
#### 20170506 1 5000 5000 1.00
多加一个0,即是多保留一位小数,还是很好理解的。
三、拓展
如果要显示为百分比的格式,或许就必须通过拼接字符串来实现了
SQL> select round(discount*100,2)||'%' as discount from retail_d;
DISCOUNT
-----------------------------------------
83.33%
81.82%
80%
80%
53.33%
100%
50%
50%
100%
100%
100%
版权声明:本文为dushihuiand1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。