Oracle中的十进制数字和货币格式

时间:2017-03-14 09:30:36

标签: sql oracle

select .5 as colm from dual;

0.5作为输出

但是

select .5||'$' as colm from dual;

结果为.5$。为什么我没有得到0.5$

如何在第二个查询中实现0.5$

4 个答案:

答案 0 :(得分:2)

我们可以像下面这样做,而不是追加。以预期格式格式化货币。

select TO_CHAR(.5,'FM999999990.099999999$') as colm from dual;

否则,您仍然可以将货币符号连接起来,

select TO_CHAR(.5,'FM999999990.099999999')||'$' as colm from dual;

关键是你必须在连接之前明确提到数字格式。

文档中详细介绍了格式模型。 Read it here

答案 1 :(得分:1)

Oracle安装程序

CREATE TABLE your_table ( value ) AS
  SELECT 0.5 FROM DUAL UNION ALL
  SELECT 5   FROM DUAL;

<强>查询

SELECT value,
       REGEXP_REPLACE(
         TO_CHAR( value, 'FM9999999990.99' ),
         '\.$'
       ) || '$' AS formatted_value,
       CASE
         WHEN TRUNC( value ) = value
         THEN TO_CHAR( value, '9999999990' )
         ELSE TO_CHAR( value, 'FM9999999990.99' )
       END || '$' AS alternate_value,
       TO_CHAR( value, '9999999990.99L' ) AS currency_value
FROM   your_table;

<强>输出

VALUE FORMATTED_VALUE ALTERNATE_VALUE CURRENCY_VALUE
----- --------------- --------------- --------------
  0.5 0.5$            0.5$            0.50$
    5 5$              5$              5.00$

答案 2 :(得分:1)

您喜欢将$写为常量字符串还是您的本地货币符号(美元)?

在以后的情况下,此解决方案可能适合您:

SELECT TO_CHAR(0.5555, 'fm999999990D99L') from dual;

请参阅TO_CHAR - Number Format Elements

  
      

  •   在指定位置返回本地货币符号(   NLS_CURRENCY参数的当前值。)。
  •   

答案 3 :(得分:-1)

你无法连接&#34; NUMBER&#34;带字符串字段的字段。

在你的情况下.5是一个数字&#39; $&#39;是一个字符串。因此,如果您希望您的结果为&#39; 0.5 $&#39;你必须传递0.5作为字符串,如下所示: -

select '0.5'||'$' as colm from dual;