Oracle
 sql >> база данни >  >> RDS >> Oracle

TO_CHAR(число) Функцията връща ORA-01722:невалиден номер

Предполагам, че qty се дефинира като varchar2 в my_table -- в противен случай няма да има смисъл от извикване на to_number . Ако това предположение е вярно, обзалагам се, че има друг ред в таблицата, където qty има нечислови данни в него.

SQL е език, базиран на набори, така че Oracle (или всяка друга база данни) е напълно свободна да оценява нещата в какъвто ред намери за добре. Това означава, че Oracle е напълно свободен да оцени to_number(qty) израз, преди да приложите id=12345 предикат. Ако случайно Oracle срещне ред, където qty стойността не може да се преобразува в число, ще изведе грешка.

Възможно е също така да има някои нечислови данни в конкретния ред, където id = 12345 които случайно не се показват (контролни знаци например). Можете да проверите това, като изпълните заявката

SELECT dump(qty, 1016) 
  FROM my_table
 WHERE id = 12345

(ако искате десетичен вместо шестнадесетичен, използвайте 1010 като втори параметър за dump ) и проверка дали има нещо неочаквано в данните.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпълнение на SQL скрипт в oracle db един израз наведнъж

  2. Регулярен израз за връщане на число след съответстващ низ в Oracle

  3. java.sql.SQLException:ORA-01002:извличане извън последователност

  4. Доставчикът на OraOLEDB в .NET ненадежден ли е в CLOB полета?

  5. Как да намерите колоната, използвана в динамичната заявка, без да изпълнявате цялата заявка