2016-10-03 31 views
0

时,我导出数据的价格值DB2,我越来越喜欢这个在DB2我导出数据的价格值让这样的“00000000000000000000000020.96000”价格价值,我们有小数列

“00000000000000000000000020.96000”

如何删除之前的零价格值。

我是这样的例外“20.96000”

我这样的查询

sum(orders.TOTALPRODUCT) this value I am getting like this "+00000000000000000000000020.96000" 

db2 "EXPORT TO customerpurchase2016.csv OF del modified BY coldel, 
SELECT userreg.logonid, 
     nvl(address.firstname,'') 
        ||' ' 
        ||                   address.lastname, 
     sum(orders.totalproduct)                AS totalproduct, 
     sum(orders.totalproduct+orders.totaltax+orders.totalshipping+orders.totaladjustment) AS totalamount, 
     userdemo.field7 
FROM  orders, 
     userreg, 
     userdemo, 
     address 
WHERE address.member_id=userdemo.users_id 
AND  userdemo.users_id=userreg.users_id 
AND  userreg.users_id=orders.member_id 
AND  orders.status NOT IN('J', 
           'P', 
           'X') 
AND  orders.lastupdate BETWEEN '2016-01-01-00.00.00.000000' AND  '2016-12-30-12.00.00.000000' 
AND  address.status='P' 
AND  address.selfaddress=1 
GROUP BY userreg.logonid, 
     userdemo.field7, 
     address.firstname, 
     address.lastname" 

回答

0

可以如下导出表时使用VARCHARTRIM OR STRIP功能;

db2 "EXPORT TO customerpurchase2016.csv OF del modified BY coldel, 
SELECT userreg.logonid, 
     nvl(address.firstname,'') 
        ||' ' 
        ||                   address.lastname, 
     TRIM(sum(orders.totalproduct))                AS totalproduct, 
     sum(orders.totalproduct+orders.totaltax+orders.totalshipping+orders.totaladjustment) AS totalamount, 
     userdemo.field7 
FROM  orders, 
     userreg, 
     userdemo, 
     address 
WHERE address.member_id=userdemo.users_id 
AND  userdemo.users_id=userreg.users_id 
AND  userreg.users_id=orders.member_id 
AND  orders.status NOT IN('J', 
           'P', 
           'X') 
AND  orders.lastupdate BETWEEN '2016-01-01-00.00.00.000000' AND  '2016-12-30-12.00.00.000000' 
AND  address.status='P' 
AND  address.selfaddress=1 
GROUP BY userreg.logonid, 
     userdemo.field7, 
     address.firstname, 
     address.lastname" 

示例;

的试样台:

create table pricetable (price decimal(31,5)); 

insert into pricetable (price) values(20.96); 
insert into pricetable (price) values(21.97); 
insert into pricetable (price) values(22.98); 
insert into pricetable (price) values(20.99); 

导出无功能;

CALL SYSPROC.ADMIN_CMD('EXPORT TO "/tmp/export" OF DEL MESSAGES ON SERVER SELECT PRICE FROM PRICETABLE'); 

[email protected]:/tmp:>cat export 
+00000000000000000000000020.96000 
+00000000000000000000000021.97000 
+00000000000000000000000022.98000 
+00000000000000000000000020.99000 

使用varchar或trim或strip函数进行导出;

CALL SYSPROC.ADMIN_CMD('EXPORT TO "/tmp/export" OF DEL MESSAGES ON SERVER SELECT VARCHAR(PRICE) FROM PRICETABLE'); 

[email protected]:/tmp:>cat export 
"20.96000" 
"21.97000" 
"22.98000" 
"20.99000" 
+0

可以尝试:修剪(SUM(orders.totalproduct))AS totalproduct, –

+0

没有工作总和(orders.totalproduct)这是一个十进制列 – mahesh

+0

变得异常这样在DB2 – mahesh

1

我无法测试,但尝试到位sum(orders.TOTALPRODUCT)从OP的使用cast(sum(orders.TOTALPRODUCT) as decimal(31, 6)。如果前导零仍然存在,那么可能使用的db2是LUW [没有提到平台,版本信息是在OP中创建的,也不是标签],并且可能存在[显式CHAR和可能的隐式转换]字符,据此前导零被认为是过去的缺陷的结果;即旧的数据库可能需要修改,以使铸件DB2 for Linux UNIX and Windows 10.1.0->Database fundamentals->SQL->Built-in functions->Scalar functions->CHAR

十进制无每注意前导零的功能字符和前导零:在之前的版本9.7版本,其结果为十进制输入此功能包括前导零和尾随小数字符。可以将数据库配置参数dec_to_char_fmt设置为“V95”以使此函数返回9.5版十进制输入的结果。新数据库的dec_to_char_fmt默认值为“NEW”,该函数返回的结果与SQL标准转换规则相匹配,并与VARCHAR函数的结果一致。

相关问题