文章目录
- 1 使用场景
- 2 解决办法
- 2.1 方法1:trim(trailing '0' from 列名)
- 2.2 方法2:to_char(列名, 'FM999990.099')
1 使用场景
- 现象:查询时,发现小数点后多了好几个 0,如:12.00,想得到的效果是 12
- 原因:表字段使用
number(12, 2)
,保留了 2 位小数 - 举例:示例 sql 语句如下
create table test_table (
sno number,
num1 number(12, 2),
var1 varchar2(30)
);
insert into test_table(sno, num1, var1) values(1, 12.34, '12.34');
insert into test_table(sno, num1, var1) values(2, 12.00, '12.00');
insert into test_table(sno, num1, var1) values(3, 12.05, '12.05');
insert into test_table(sno, num1, var1) values(4, 12, '12');
commit;
SELECT t.* FROM test_table t;
2 解决办法
2.1 方法1:trim(trailing ‘0’ from 列名)
select t.sno,
trim(trailing '0' from t.num1) num1,
trim(trailing '0' from t.var1) var1
from test_table t;
2.2 方法2:to_char(列名, ‘FM999990.099’)
- FM:固定格式
- 9:表示数值 1 ~ 9,其中
- 9 的个数代表数值的位数,如:999.99 表示 整数位有 3 个,小数位有 2 个
- 9 表示的数值位数可大于实际的数值位数,如下查询sql
- 0:表示数值 0,避免出现
"xx."、".xx"
这种情况
select t.sno,
to_char(t.num1, 'FM999990.099') num1,
to_char(t.var1, 'FM999990.099') var1,
trim(trailing '.' from to_char(t.num1, 'FM999990.999')) num2
from test_table t