我不完全理解如何使用 to_char 函数将数字转换为具有适当格式模型的字符串。
实际数字具有以下格式:
- 使用逗号作为小数点分隔符
- 始终为 5 个小数
- 整数最多可达 6(可能是无限的,但目前绝不会超过 6)
- 数字可以是正数或负数
- 数字可以以 0 开头
我尝试使用 to_char 但无法获得适用于所有条件的结果
输出应该如何的一些示例是
0,00235
或156,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/