0

我得到了 DB 的回报,给了我整数和小数。比方说:

从表中选择美元

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

to_char(dollar,'99999999.99'),十进制时可以。但是,如果它是整数,我会得到 1.00 或 2.00。

如果数据是整数,我不想有无用的 0。我怎样才能做到这一点?如果是整数,就输入整数,如果是小数,就输入小数。

先感谢您。

4

1 回答 1

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)

但是,我总是担心整数和浮点值之间的比较可能会有一些非常小的偏差,所以我更喜欢第一种方法。

于 2013-07-02T15:32:35.867 回答