SQL to_char在不同的情况下需要整数和小数

SQL to_char在不同的情况下需要整数和小数,sql,Sql,我从DB得到一个返回,给我整数和小数。比如说: 从表中选择美元 有时美元是整数(1,2),有时是小数(1.54,2.32)。如果我这样做: 对于_char(美元,'9999999.99'),当它是十进制时,就可以了。但是,如果它是整数,我得到了1.00或2.00 如果数据是整数,我不希望有无用的0。我该怎么做?如果它是整数,就放整数,如果它是小数,就放小数 提前谢谢。好吧,数据类型不会改变,所以您所说的是以固定或浮点表示形式存储的整数值。最简单的方法可能是: select (case when

我从DB得到一个返回,给我整数和小数。比如说:

从表中选择美元

有时美元是整数(1,2),有时是小数(1.54,2.32)。如果我这样做:

对于_char(美元,'9999999.99'),当它是十进制时,就可以了。但是,如果它是整数,我得到了1.00或2.00

如果数据是整数,我不希望有无用的0。我该怎么做?如果它是整数,就放整数,如果它是小数,就放小数


提前谢谢。

好吧,数据类型不会改变,所以您所说的是以固定或浮点表示形式存储的整数值。最简单的方法可能是:

select (case when to_char(dollar, '99999999.99') like '%.00'
             then to_char(dollar, '99999999')
             else to_char(dollar, '99999999.99')
        end)
也就是说,进行转换。如果最后三个字符是“.00”,则不使用它们进行转换。如果您不喜欢双重转换,也可以通过算术实现:

select (case when 100*cast(dollar / 100 as int) = dollar
             then to_char(dollar, '99999999')
             else to_char(dollar, '99999999.99')
        end)
然而,我总是担心整数和浮点值之间的比较可能会有一些非常小的偏差,所以我更喜欢第一种方法