JDBC与SQL*Plus/Toad中相同select查询的不同结果

JDBC与SQL*Plus/Toad中相同select查询的不同结果,jdbc,oracle10g,sqlplus,java-6,Jdbc,Oracle10g,Sqlplus,Java 6,我尝试运行以下示例查询 SELECT some_field FROM MY_VIEW WHERE date_field >= TO_DATE('2011-06-22', 'yyyy-mm-dd') 当我在SQL*Plus中运行此命令时,我得到一组结果,当我使用java.SQL.Statement尝试通过JDBC时,我得到以下错误:java.SQL.SQLException:ORA-01722:无效数字 更奇怪的是,以下代码通过JDBC工作: select field_1 FROM MY_

我尝试运行以下示例查询

SELECT some_field
FROM MY_VIEW
WHERE date_field >= TO_DATE('2011-06-22', 'yyyy-mm-dd')
当我在SQL*Plus中运行此命令时,我得到一组结果,当我使用java.SQL.Statement尝试通过JDBC时,我得到以下错误:java.SQL.SQLException:ORA-01722:无效数字

更奇怪的是,以下代码通过JDBC工作:

select field_1
FROM MY_VIEW v1
WHERE field_2 != 'some value'
AND not exists (
    SELECT field_1
    FROM MY_VIEW v2
    WHERE v1.field_1 = v2.field_1
    and t1.timestamp < t2.timestamp
)
但是下面仍然在SQL*Plus中工作的代码与ORA-01722错误不同:

select field_1
FROM MY_VIEW v1
WHERE field_2 != 'some value'
AND not exists (
    SELECT field_1
    FROM MY_VIEW v2
    WHERE v1.field_1 = v2.field_1
    and v2.field_2 = 'some value'  -- Does not work with this line (same value as above)
    and v1.timestamp < v2.timestamp
)
我正在运行Java6,连接到Oracle10g,并使用ojdbc14.jar。我认为需要注意的是,在MY_视图中查询的视图是一件相当复杂的事情,包括将多个字段从varchar转换为numeric。我目前的怀疑是,Oracle正在为jdbc查询创建一个与SQL*Plus不同的、不可行的执行计划

有什么建议我应该从这里做吗


谢谢。

字段_2的数据类型是什么?您确定“其他值”确实是字符串吗?你不会做像和v2.field_2=0这样的事情,是吗?肯定。事实上,我应该更正,我对=和!=使用相同的值领域