数字

时间:2015-05-05 16:32:36

标签: oracle decimal zero

当转换为char?

时,如何禁用删除十进制的前导零?

例如:

select to_char(0.1) from dual;

返回.1,而不是0.1。

我知道我可以使用格式参数,但我希望它对于隐式转换是正确的。

我有很多用于从数据库获取数据的plsql代码。 在某些情况下,存在从float到varchar2的转换。

例如,当列类型的请求为数字时,将 dbms_sql.define_array varchar2 表一起使用。

我可以尝试找到所有这些东西并纠正它们(我这样做),但恕我直言,这是为这种转换设置规则的更好方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

Afaik你不能改变隐式转换的默认格式。

如果您仅限于在给定表的插入/更新的上下文中使用转换,则可以使用database triggers模仿预期的行为。与查看该用例的快速格式模型相比,我没有看到任何优势。

有一些官方的oracle文档声称你可以通过在java中重新实现它们来覆盖内置函数。我从来没有这样做过,我不知道这是否是一种通常可行的方法,我强烈反对任何修改数据库API的尝试(因此,包括nolink)!

假设您的目标在某种程度上是可行的,请重新考虑为什么您不想明确指出转换格式。少数额外的击键对开发人员来说几乎不会造成麻烦,而成语则有助于自我记录的代码库。

比执行微优化更明智地花费您的开发资源!