【发布时间】:2017-03-05 07:30:07
【问题描述】:
我正在尝试将“$”美元符号格式化为“c”列,该列是其他两列的所有行相乘的总和。我先把它变成一个字符如下:
SELECT TO_CHAR(SUM(a * b)) AS "c"
FROM table1;
效果很好,但是当我通过添加“L9,999.99”格式化程序对其进行格式化时,会出现错误:
SELECT TO_CHAR(SUM(a * b, 'L9,999.99') AS "c"
FROM table1;
所以我尝试做一个 CAST:
SELECT TO_CHAR(CAST(SUM(a * b) AS NUMERIC(10,2)) AS "c"
FROM table1;
但没有任何效果。
如何使用 TO_CHAR 和/或 CAST 向具有 SUM() 函数的列添加“$”美元符号?
作为参考,我的预期输出是转:
C
10
10.05
11.50
进入
C
$10
$10.05
$11.50
【问题讨论】:
-
你不会告诉我们引发了哪个错误吗?如果您格式化文字数字,这种格式是否有效?总和可以在没有格式化的情况下工作吗?涉及的列的类型是什么?
-
使用相同数量的左括号和右括号是否有效?
-
我所有的数据类型都是数字(10, 2)。引发的错误是:“ORA-01722:无效号码”
-
我不相信这是你得到的错误号
-
使用额外的右括号,这可以作为独立查询正常工作;那么你在哪里以及如何运行它,它实际上是否是更大查询的一部分(显式或隐式)试图再次将你生成的字符串视为数字?尝试创建an MCVE,它会创建并填充一个表并在查询时生成此错误 - 我们可以以相同的方式运行。
标签: sql oracle formatting currency to-char