使用“替换”查询时出错

时间:2014-07-18 12:42:04

标签: sql oracle

我在oracle服务器上有错,但我不明白为什么不工作。 我使用的是oracle sql developer软件。

查询是:

SELECT * FROM TestView WHERE REPLACE(TestView.Row2, '.', ',') > 0 ;

TestVue.Row2中的值:' 46.08'' -46.47'' 1084.05'' 66500&#39 ; ... " TestView"是一个检查返回没有空值的行的视图

当我执行查询时,我总是出错:谁说:

ORA-01722:无效的号码 01722. 00000 - "无效数字" *原因: *操作:

感谢您的帮助

Zoners

3 个答案:

答案 0 :(得分:0)

您的表中有一行,无法解析为数字格式。很可能它是一个空白栏目。

SELECT * FROM TestVue WHERE TestVue.Row2 IS NULL ;

答案 1 :(得分:0)

您应该能够找到类似以下内容的行:

select Row2
from TestVuw
where length(trim(translate(Row2, '+-.,0123456789', ' '))) = 0

当然,这允许多个+-.,。它可以使用正则表达式进一步细化,但这通常可以找到坏的表达式。

答案 2 :(得分:0)

使用NVL函数避免由空字段和TO_NUMBER函数引起的错误在与零比较之前强制转换为数字

SELECT * FROM TestView WHERE TO_NUMBER(REPLACE(NVL(TestView.Row2,'0'), '.', ',')) > 0 ;