将货币转换为文本并保持格式

Convert money to text and keep format

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

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 是我的数据库

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

MONEY and SMALLMONEY are currency numeric data types. The scale for currency data types is always 4.

SELECT CAST('123123' AS money)

此查询将 return 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)
} 

}

并查询SELECT Sample.TO_MONEY(1234567),将return$ 1,234,567.00

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

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