【问题标题】:How do I convert a result from 1000 to 1000.00 in Oracle? [duplicate]如何在 Oracle 中将结果从 1000 转换为 1000.00? [复制]
【发布时间】:2020-01-17 10:37:52
【问题描述】:

我的选择查询是:

Select ROUND(1000,2) from dual;

查询结果返回如下:

ROUND(1000,2) ---> 1000

我想这样返回:1000.00

如何转换?

【问题讨论】:

  • cast(1000 as decimal(12,2))
  • 结果是正确的。 1000 = 1000.00 = 1000.0000000。如果您想以不同的方式显示它,您可以使用 Oracle 的 TO_CHAR,但最好让您的 GUI 或网站关心显示(因为它会知道其用户是否需要逗号或小数点分隔符,您的 DBMS 可能不知道)。
  • 试试这个:TO_CHAR(ROUND(1000, 2), '99999D00', 'NLS_NUMERIC_CHARACTERS='',.''')

标签: sql oracle


【解决方案1】:

一种选择是使用 Format Models

Select to_char(<numeric_column>,'fm999990D00','NLS_NUMERIC_CHARACTERS = ''.,''') as "Number"
  From <your table>

其中 D 代表 十进制字符 在这种情况下(如果需要,则可以通过使用将包含逗号分隔符的货币格式转换为 'fm999G990D00' G 字符在这种情况下,例如 12345 -> 12,345.00 )

【讨论】:

  • D 代表十进制字符而不是“点”,因为有些国家使用点作为千位分隔符,逗号作为小数分隔符,反之亦然。
  • 没错,我们甚至在土耳其使用'NLS_NUMERIC_CHARACTERS = '',.''' 的货币格式。已修复,谢谢@MT0
【解决方案2】:

你可以使用TO_CHAR:

SELECT TO_CHAR(1000, 'FM9999999.90')
FROM dual;

关于在这里使用字符类型,您的主要兴趣似乎是以某种方式查看您的数字数据。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2019-09-13
    • 2011-03-22
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2017-05-04
    相关资源
    最近更新 更多