我在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
答案 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 ;