3

我有一个带有 ID (varchar2) 的 ID 字段,例如 U123JAS 和 P239BB。

在我的查询中,我执行了一个类似的过滤器:

ID LIKE ('U20Q%') //works perfectly.

但是:当我这样做时:

ID LIKE ('U20%') //it fails

错误代码

[Error Code: 1722, SQL State: 42000]  ORA-01722: invalid number

为什么?

解决方案:

错误是由(tadaa)在完全不同的列中转换的无效数字引起的。导致错误的 DataRow 只命中了第二个。

谢谢大家的帮助,愿我的失败以后能帮助别人:D

4

1 回答 1

3

我认为您的查询中的其他地方存在数字转换。在第一种情况下根本不会对其进行评估,因为触发错误的行的 id 不是以 开头U20Q,而是以 id 开头U20

当需要转换数字时,在第二种情况下,您有一行失败。

试试这个:

SELECT * FROM dual WHERE 1 < dummy AND 1 = 0; /* works */

SELECT * FROM dual WHERE 1 < dummy AND 1 = 1; /* ORA-01722 */
于 2012-03-06T15:36:47.907 回答