2012-01-30 68 views
3

场景:我调用一个返回用户输入字段的函数。该字段通常会返回一个数字'120000',然后使用to_char将其转换为' 120000' 。Oracle To_Char函数如果它已经是一个字符串,该如何处理

问题:某些用户输入的值为'120,000',这会在尝试使用to_char时给我一个错误。如果没有找到值,该函数将返回一个空格“'。我之前尝试过使用to_number,它对'我相信'有问题。

问题:处理这个问题的最好方法是什么? Case语句检查','?使用to_number然后to_char?

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

+0

地带的逗号出来,然后用'to_char'如上。或者告诉用户只输入数字。 – 2012-01-30 19:08:26

+2

最好的办法是防止用户首先用逗号输入数字。如果你无法控制,那么杰克的钱 - 只是用'替换'(字段,',','')' – 2012-01-30 19:17:15

+2

删除逗号我会强制用户输入一个数字,而不是一个格式化的数字(120,000) 。此外,一些地方使用。而不是,所以去掉逗号并不总是奏效。 – tbone 2012-01-30 19:22:35

回答

7

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

然后,您可以从字符串中删除任何非数字字符,然后再格式化它,然而您喜欢。

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

REGEXP_REPLACE(<your field>, '[^0-9]+', ''); 

这将替换所有非数字字符无效有效地从字符串删除它们。

看到这个答案过于: Oracle: Replacing non-numeric chars in a string

+0

如果答案中的“链接”在未来中断,会发生什么情况? :)我引用自己从[这里](http://stackoverflow.com/questions/12060917/using-nested-tables-in-java/12061531#comment16109755_12061531) – Annjawn 2012-08-21 20:25:28

+0

@安妮嘉恩,因为你似乎拖网我以前的答案那些包含我只能假设你的链接的链接已经以你没有打算的方式从你所链接的答案中得到了我的评论。它不是为了让你进攻而设计的。 FWIW,我相信这个答案是站得住的,即使链接既包含信息,也包含链接,从而破坏链接。你不同意吗? – Ollie 2012-08-21 20:43:52

+0

我确实。但链接可能会中断。任何时候,没有任何理由。但这并不意味着我们会停止使用它们。 – Annjawn 2012-08-21 20:48:45

相关问题