sql - Oracle 中的 TO_Char 数字格式模型

标签 sql oracle to-char

我不完全理解如何使用 to_char 函数将数字转换为具有适当格式模型的字符串。

实际数字具有以下格式:

  • 使用逗号作为小数点分隔符
  • 始终为 5 个小数
  • 整数最多可达 6(可能是无限的,但目前绝不会超过 6)
  • 数字可以是正数或负数
  • 数字可以以 0 开头

我尝试使用 to_char 但无法获得适用于所有条件的结果

输出应该如何的一些示例是 0,00235156,45623-0,0235-156,45623

最佳答案

请记住,您正在将数字转换为字符串。该数字没有任何“,”或“.”的含义。或任何东西——它是一个数字。

诀窍是使用TO_CHAR函数将内部数字转换为您想要的字符串表示形式。 有几个问题需要担心:正确获取小数点(小数)并处理填充。

这是一个工作示例:

SELECT to_char(0.00235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

0,00235

SELECT to_char(156.45823,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

156,45823

SELECT to_char(-0.0235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

-0,0235

SELECT to_char(-156.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

-156,45623

SELECT to_char(123456789.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

123456789,45623

mask 相关部分:

FM用于修剪 Oracle 通常用来填充数字的前导和尾随空格。

D 是小数点,具体取决于您的 NLS 设置。

NLS_NUMERIC_CHARACTERS ... 是对本地 NLS 设置的覆盖 - 如果您的区域设置使用逗号作为小数点,则这可能不是必需的,但这是您可以强制执行此行为的一种方式例如,具有北美设置的数据库。

关于sql - Oracle 中的 TO_Char 数字格式模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57063906/

相关文章:

sql - Oracle 时间比较

sql-server - SQL Server 中 To_Char 和 T_Number 交替进行格式化

mysql - 如何使用SQL获取出现次数最多的组合?

oracle - 将 micronaut-data 与 JDBC 结合使用时如何获取数据库序列值

sql - SQL查询的问题

java - JDBC 4 的 java.sql.Clob.free() 方法和向后兼容性

sql - 使用to_char的Postgresql小数点

sql - SQL Server 中的月份名称

mysql - 如何在参数化查询中转义单引号

Php 选择 * 喜欢的地方