2

我需要在查询中显示一个美元范围,但是当我连接这些值时,我在输出中丢失了逗号。

select
'$'||CAST(ROUND(MIN(db.INITIAL_BALANCE),-1) AS money)
||' to '||
'$'||CAST(ROUND(MAX(db.INITIAL_BALANCE),-1) AS money) AS Balance_Range

产出为 2060 美元到 73690 美元

期望产出 $2,060 至 $73,690

对此有何建议?

Intersystems Cache 是我的数据库

4

2 回答 2

1
'$'||TRIM(tochar(MIN(db.Account_Balance),'9,999,999'))|| ' to ' ||'$'||TRIM(tochar(max(db.Account_Balance),'9,999,999'))

给了我我需要的东西.. 谢谢!

于 2016-12-08T16:51:29.507 回答
1

你为什么认为,你甚至有逗号?
文档没有说明格式化值。

MONEY 和 SMALLMONEY 是货币数字数据类型。货币数据类型的小数位数始终为 4。

SELECT CAST('123123' AS money)

此查询将按123123.0000预期返回

如我所见,至少有两种方法可以做到这一点。

  • 定义您自己的数据类型,以%Currency为例,您可以在其中更改刻度数和格式。但是您应该在需要的所有类中将所有属性更改为这种类型。
  • 或者您可以定义新的 SQL 函数,它将根据需要格式化所有数字。

如下所示:

Class Sample.Utils Extends %RegisteredObject
{

ClassMethod ToMoney(pValue As %Integer = 0) As %String [ SqlProc, SqlName= "TO_MONEY"]
{
    quit "$ " _ $fnumber(pValue, ",", 2)
} 

}

和 Query SELECT Sample.TO_MONEY(1234567),将返回$ 1,234,567.00

于 2016-11-30T20:04:02.483 回答