Ошибки · Решение
Oracle ORA-01722: invalid number — строка не преобразуется в число
В numeric conversion попало значение, которое не соответствует допустимому числовому literal.
Короткий ответ
ORA-01722 означает, что Oracle не смог преобразовать строковое значение в number. В новых версиях сообщение может показывать invalid character и выражение.
Что означает ошибка
В numeric conversion попало значение, которое не соответствует допустимому числовому literal.
Возможные причины
- В текстовой колонке есть нечисловое значение, которое неявно приводится к NUMBER.
- Формат decimal separator/NLS не совпадает с входной строкой.
- CASE/JOIN/WHERE заставляет Oracle выполнить неявное преобразование раньше ожидаемого.
Что проверить
- Включите ERROR_MESSAGE_DETAILS, если версия поддерживает подробности ORA-01722.
- Найдите проблемное значение и место implicit/explicit conversion.
- Проверьте NLS numeric settings и формат входных данных.
Безопасные шаги
- Очищайте и валидируйте данные до TO_NUMBER либо используйте явный format model.
- Избегайте хранения числовых сущностей в свободном текстовом поле без необходимости.
- Устраните implicit conversion в сравнении колонок разных типов.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если ORA-01722 зависит от плана запроса или окружения, DBA/разработчику нужны SQL, bind types и NLS settings проблемной сессии.
Похожие ошибки
- /errors/oracle-ora-00001/
- /errors/oracle-ora-00054/
- /errors/oracle-ora-00904/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.