如何避免在连接oracle中使用to_char()强制转换?

时间:2017-06-09 10:30:17

标签: oracle concatenation

如何避免使用格式化小数值转换to_char()以避免将来可能出现的错误,具体取决于输入值? e.g。

SELECT -0.56 || 'value' FROM DUAL;

将返回

  

- 56value

我希望

  

-0.56value。

我知道我可以使用

select to_char(-0.56, '990.00') || 'value' from dual;

但我不知道未来会有多少位数

2 个答案:

答案 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;