如何避免使用格式化小数值转换to_char()以避免将来可能出现的错误,具体取决于输入值? e.g。
SELECT -0.56 || 'value' FROM DUAL;
将返回
- 56value
我希望
-0.56value。
我知道我可以使用
select to_char(-0.56, '990.00') || 'value' from dual;
但我不知道未来会有多少位数
答案 0 :(得分:2)
您可以使用足够9的to_char(-0.56, '999999990.00')
来涵盖所有可能的值。 (总有一个限制,因为NUMBER数据类型最多为38位数 - 是的,你可以在格式模型中有37个9和0。)
这可能会在左侧添加一些不需要的空格;要修改该行为,请使用fm
修饰符:to_char(-0.56, 'fm99999999990.00')
。
答案 1 :(得分:1)
试试这个
select rtrim(to_char(-0.56, 'FM9999999990.999999999'), '.') || 'value' from dual;