我得到了 DB 的回报,给了我整数和小数。比方说:
从表中选择美元
有时美元是整数 (1, 2),有时是小数 (1.54,2.32)。如果我做:
to_char(dollar,'99999999.99'),十进制时可以。但是,如果它是整数,我会得到 1.00 或 2.00。
如果数据是整数,我不想有无用的 0。我怎样才能做到这一点?如果是整数,就输入整数,如果是小数,就输入小数。
先感谢您。
我得到了 DB 的回报,给了我整数和小数。比方说:
从表中选择美元
有时美元是整数 (1, 2),有时是小数 (1.54,2.32)。如果我做:
to_char(dollar,'99999999.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)
但是,我总是担心整数和浮点值之间的比较可能会有一些非常小的偏差,所以我更喜欢第一种方法。