我正在使用 Oracle 10g,并且有一个数据库列 Q1 的数据类型为 varchar2。此列主要包含 float 和 int 值。
我正在尝试运行一个查询,该查询将获取值,但具有标准美国货币格式的值格式。例如,如果值为 3020,则查询将返回 3,020.00。
我尝试了以下方法,但都不起作用。
SELECT TO_CHAR(Q1, '9,999.99') FROM TABLE1;
ORA-01722: invalid number
01722. 00000 - "invalid number"
SELECT TO_CHAR(TO_NUMBER(Q1), '9,999.99') FROM TABLE1;
ORA-01722: invalid number
01722. 00000 - "invalid number"
我还尝试使用实际值而不是列名,第一个示例有效。:-/
SELECT TO_CHAR('1234', '9,999.99') FROM TABLE1; //returns 1,234.00
在这一步之后,我返回并尝试在 TO_NUMBER() 中添加格式掩码: SELECT TO_CHAR(TO_NUMBER(Q1, '9,999.99'), '9,999.99') FROM TABLE1;
ORA-01722: invalid number
01722. 00000 - "invalid number"
它仍然无法正常工作。
有人可以准确解释为什么这不适用于我的专栏吗?最初虽然是因为列的数据类型不是数字、浮点数或整数,但即使转换为数字后,我仍然会遇到同样的错误。任何帮助将不胜感激。