我无法使用Oracle将10500.37作为货币转换为10,500.37美元。我目前正在使用Oracle SQL开发人员。
这就是我所做的:
SELECT to_number('10500.37','$ 10,500.37') 来自双重;
不确定如何解决此问题以及我是否正确使用格式模型。希望得到一些帮助!
答案 0 :(得分:0)
您正在将数字转换为格式化字符串,因此您需要to_char()
而非to_number()
(以其他方式转换)。
这是一种可能的格式模型:
SELECT to_char(10500.37, 'L999G990D00') FROM Dual;
TO_CHAR(1050
------------
$10,500.37
您需要足够的前9个占位符(和组分隔符)以获得您必须处理的最高价值。
数字格式模型are listed in the documentation。
我使用G作为组分隔符(而不是硬编码逗号),D用于小数分隔符(而不是硬编码句点)。我用L代替当地货币符号。所有这些都取决于客户端的NLS设置:
alter session set nls_territory='UNITED KINGDOM';
SELECT to_char(10500.37, 'L999G990D00') FROM Dual;
TO_CHAR(10500.37,'L99
---------------------
£10,500.37
alter session set nls_territory='GERMANY';
SELECT to_char(10500.37, 'L999G990D00') FROM Dual;
TO_CHAR(10500.37,'L99
---------------------
€10.500,37
alter session set nls_territory='AMERICA';
SELECT to_char(10500.37, 'L999G990D00') FROM Dual;
TO_CHAR(10500.37,'L99
---------------------
$10,500.37
alter session set nls_territory='GERMANY';
SELECT to_char(10500.37, '$999,990.00') FROM Dual;
TO_CHAR(1050
------------
$10,500.37