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

时间:2013-07-02 15:30:53

标签: sql

我从DB那里得到了回报给我内插和小数。让我们说:

从表中选择美元

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

to_char(美元,'99999999.99'),当它是十进制时,没关系。但是,如果它是整数,我得到1.00或2.00。

如果数据是整数,我不想没用0。我怎样才能做到这一点?如果它是整数,只需输入整数,如果是十进制,则输入十进制。

提前谢谢。

1 个答案:

答案 0 :(得分: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)

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