3

U123JAS や P239BB のような ID (varchar2) を持つ ID フィールドがあります。

クエリ中に、like フィルターを実行します。

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

しかし:私がするとき:

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

エラーコード

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

なんで?

解決:

エラーは、(tadaa) まったく別の列に無効な数値がキャストされたことが原因でした。エラーの原因となっていた DataRow は 2 番目のようにしかヒットしません。

助けてくれてありがとう、私の失敗が将来誰かを助けるかもしれません:D

4

1 に答える 1

3

クエリのどこかに数値変換があると思います。U20Qエラーをトリガーする行には で始まる ID はなく、 で始まる ID があるため、最初のケースでは単純に評価されませんU20

数値を変換する必要がある場合、2 番目のケースでは、失敗する行があります。

これを試して:

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 に答える