【问题标题】:Db2 : decimal column to varchar columnDb2:十进制列到 varchar 列
【发布时间】:2014-04-11 09:52:18
【问题描述】:

我的 db2 版本是 9.5:

我有一个选择查询如下:

select sum(BAL_BOOK_AMT) as sum from mySchema.myTable group by idCol

结果如下:

  SUM
---------
 0
 2,475,000
 746,966.091
-627,247.63

我想使用如下查询:

insert into mySchema.myTable1 select sum(bal_book_amt) as sum from mySchema.myTable group by idCol

但是,mySchema.myTable1 中的 SUM 列是 VARCHAR(40) 类型(由于其他原因,我无法将其更改为十进制)。因此,我得到以下错误:

 by: com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-408, SQLSTATE=42821

当我尝试以下操作时:

select char(sum(BAL_BOOK_AMT)) as sum from mySchema.myTable group by idCol

值变成:

00000000000000000000000000000.00 
00000000000000000000000000000.00 
00000000000000000000002475000.00 
00000000000000000000000550000.00 
00000000000000000000000746966.09 

我不想要的。

如何格式化,使值按原样以字符串形式出现:

 0
 2,475,000
 746,966.091
-627,247.63

感谢阅读!

【问题讨论】:

  • ... 为什么你不能改变它?在显示之前,通常不应该对事物进行格式化——最多我会删除前导零;例如,不同地区的千位分隔符是不同的(有些文化也会在不同的单位上分隔)。

标签: sql database db2


【解决方案1】:

尝试使用VARCHAR_FORMAT() function

insert into mySchema.myTable1 
select VARCHAR_FORMAT(sum(bal_book_amt), '999,999,999,999.99') as sum
....

【讨论】:

  • 这个功能似乎在我的版本中不存在..必须是以后补丁或其他东西的一部分..我无法控制它..
猜你喜欢
  • 1970-01-01
  • 2020-12-14
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多