我需要在查询中显示美元范围,但是当我连接这些值时,我在输出中丢失了逗号。
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)
此查询将按预期返回 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)
,将返回$ 1,234,567.00
关于sql - 将金钱转换为文本并保持格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40892216/