在Oracle中转换原始数字

时间:2017-02-17 17:40:18

标签: sql database oracle

我无法使用Oracle将10500.37作为货币转换为10,500.37美元。我目前正在使用Oracle SQL开发人员。

这就是我所做的:

SELECT to_number('10500.37','$ 10,500.37') 来自双重;

不确定如何解决此问题以及我是否正确使用格式模型。希望得到一些帮助!

1 个答案:

答案 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