Oracle LIKE возвращается (ORA01722) - PullRequest
3 голосов
/ 06 марта 2012

У меня есть поле идентификатора с идентификаторами (varchar2), такими как U123JAS и P239BB.

Во время моего запроса я выполняю подобный фильтр:

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

, но: когда я делаю:

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

ErrorCode

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

Почему?

РЕШЕНИЕ:

Ошибка была вызвана (tadaa) недействительнымчисло приведено в совершенно другом столбце.DataRow, вызвавший ошибку, попал только во вторую, как.

Спасибо всем за помощь, может моя неудача поможет кому-то еще в будущем: D

1 Ответ

3 голосов
/ 06 марта 2012

Я думаю, что где-то еще в вашем запросе есть преобразование чисел. Это просто не оценивается в первом случае, потому что строка, которая вызывает ошибку, не имеет идентификатора, начинающегося с U20Q, но имеет идентификатор, начинающийся с U20.

Когда необходимо преобразовать число, во втором случае у вас есть строка, для которой оно не выполняется.

Попробуйте это:

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

SELECT * FROM dual WHERE 1 < dummy AND 1 = 1; /* ORA-01722 */
...