文章目录 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' ) ) num2from test_table t