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 */