如何在 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 HugSQL 结果中将返回的地图转换为 json csv
如何在 oracle 中将日期格式从“28-03-18 09:11:34.000000000 PM”转换为“MM-DD-YYYY HH24:MI:SS”