Oracle LIKE возвращается (ORA01722)

У меня есть поле идентификатора с идентификаторами (varchar2), как 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

1 ответ

Решение

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

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

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

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

SELECT * FROM dual WHERE 1 < dummy AND 1 = 1; /* ORA-01722 */
Другие вопросы по тегам