Netezza双精度输出截断Vaules



我已经注意到NZSQL和'nzunload'只是截断了双精度列的Mantissa值。这是问题:

从table1选择 tot_amt;

tot_amt
~~~~~~~    
123.124    
567.678

当我使用其他客户(例如Aginity进行数据分析)时 - 我获得的输出是

tot_amt
~~~~~~~
123.1240535
567.6780122

还发现,当Netezza在3个Mantissa数字之后遇到0时,我发现了"截断"

我们试图将此DB迁移到Oracle,因此由于这个问题,整个项目都搞砸了,客户不信任我们的迁移脚本。有人遇到这个问题吗?唯一的解决方法,即使是FRMO IBM工程师也是将其施放TO_CHAR( '999,999.999', col ),如果我必须在数十亿行进行操作,这将杀死卸载脚本。

我可以重现此问题,其中我的表格用column创建为float(6),例如:

USERDB.USER(USER)=> create table ZZ (
USERDB.USER(USER)(> YY FLOAT(6)
USERDB.USER(USER)(> );
CREATE TABLE
USERDB.USER(USER)=> insert into ZZ (yy) values (123.123456789);
INSERT 0 1
USERDB.USER(USER)=> insert into ZZ (yy) values (12.123456789);
INSERT 0 1
USERDB.USER(USER)=> select * from ZZ;
   YY
---------
 123.123
 12.1234
(2 rows)
USERDB.USER(USER)=> select CAST ( YY as FLOAT(15) ) from ZZ;
    ?COLUMN?
----------------
 123.1234588623
12.123399734497
(2 rows)
USERDB.USER(USER)=>

我可以将列值投放到更宽的类型,但是我看到的问题是我插入的值与返回的值不同。如果我也使用Aginity查询,则值不正确,也是如此。

检查表1中" tot_amt"列的精度(和比例),我想用于存储值的数据类型很小(float(6)也许?),NZSQL告诉您执行的正确值通过数据类型。

最新更新