首页 文章

Oracle Number to_char返回非常大数字的哈希符号

提问于
浏览
0

我有一个.NET Windows服务,它将SQL Server数据库与Oracle(11g)数据库同步(这是手动完成的,因为第三方Oracle数据库中没有主键,我们无法使用SQL Server复制) .

我使用每行的MD5哈希来检查发布者和订阅者之间的差异,并尝试确保MD5函数的输入具有相同的SQL Server和Oracle数据库格式,以便将苹果与苹果进行比较 . 因此,对于 NUMBER 列(在SQL Server表的相应列中是'FLOAT'),我将值格式化如下:

Oracle

select to_char(13.9, '000000000.00000000000000000000') 
from dual;

SQL Server

select FORMAT(13.9, '000000000.00000000000000000000')

这种情况在大多数情况下都可以正常工作,但是,当 NUMBER 列的值达到10个数字时,似乎是在Oracle to_char 函数的情况下 . 1000000000(而不是999999999)然后 to_char 输出一串哈希符号:

###############################

这意味着对于某些值,我的MD5函数的输入在Oracle和SQL Server之间不同 .

我能用 to_char 做些什么来纠正这个问题吗?

1 回答

  • 2

    您的格式掩码指定 nine leading digits . 因此,当你传递函数一个带有十个前导数字的数字时,你可能不会期望一串 ### ,你应该期待异常行为:)

    最简单的解决方案:使您的格式掩码更大 . 你允许数字到二十个小数位,这是非常精确的 . 为什么不那么慷慨与不可分割的一部分?

相关问题