Oracle To_Char函数如果它已经是一个字符串,如何处理

Gag*_*age 3 sql oracle formatting to-char

场景:我正在调用一个返回用户输入字段的函数.该字段通常返回一个类似'120000'的数字,然后我使用to_char转换为'120,000'.

问题:某些用户输入的值为"120,000",这在尝试使用to_char时会出错.如果没有找到值,该函数也将返回一个空格''.我之前尝试过to_number的东西,并且它有''我相信'的问题.

问题:处理此问题的最佳方法是什么?案例陈述检查','?使用to_number然后to_char?

注意:我可以一起破解解决方案我只是想知道处理这个问题的最佳方法是什么.

Oll*_*lie 7

您应该使用REGEXP_REPLACE功能更强大的功能,而不是使用REPLACE . http://www.orafaq.com/wiki/REGEXP_REPLACE

然后,您可以从字符串中删除任何非数字字符,然后根据需要对其进行格式化.

在你的情况下,它将是这样的:

REGEXP_REPLACE(<your field>, '[^0-9]+', '');
Run Code Online (Sandbox Code Playgroud)

这会将所有非数字字符替换为null,从而有效地将其从字符串中删除.

也请参阅此答案: Oracle:替换字符串中的非数字字符