如何在 Oracle 中将结果从 1000 转换为 1000.00? [复制]

Posted

技术标签:

【中文标题】如何在 Oracle 中将结果从 1000 转换为 1000.00? [复制]【英文标题】:How do I convert a result from 1000 to 1000.00 in Oracle? [duplicate] 【发布时间】: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='',.''') 【参考方案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;

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

【讨论】:

以上是关于如何在 Oracle 中将结果从 1000 转换为 1000.00? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在Oracle中将列转换为行[重复]

如何在 HugSQL 结果中将返回的地图转换为 json csv

如何在 oracle 中将日期格式从“28-03-18 09:11:34.000000000 PM”转换为“MM-DD-YYYY HH24:MI:SS”

如何在sql中将数字转换为日期

java中将一个double类型的数强制转换为long 型是四舍五入吗?

如何在 Bash 中将字符串从大写转换为小写? [复制]