Oracle
 sql >> Baza danych >  >> RDS >> Oracle

TO_CHAR(liczba) Funkcja zwraca ORA-01722:nieprawidłowa liczba

Zakładam, że qty jest zdefiniowany jako varchar2 w my_table -- w przeciwnym razie wywołanie to_number nie miałoby sensu . Jeśli to założenie jest poprawne, założę się, że w tabeli jest inny wiersz, w którym qty zawiera dane nieliczbowe.

SQL jest językiem opartym na zbiorach, więc Oracle (lub jakakolwiek inna baza danych) może swobodnie oceniać rzeczy w dowolnej kolejności, jaką uzna za stosowną. Oznacza to, że Oracle ma całkowitą swobodę oceny to_number(qty) wyrażenie przed zastosowaniem id=12345 orzec. Jeśli Oracle napotka wiersz, w którym qty wartości nie można przekonwertować na liczbę, spowoduje to błąd.

Możliwe jest również, że w konkretnym wierszu znajdują się dane nieliczbowe, w których id = 12345 akurat się nie wyświetla (na przykład znaki sterujące). Możesz to sprawdzić, uruchamiając zapytanie

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

(jeśli chcesz dziesiętny, a nie szesnastkowy, użyj 1010 jako drugiego parametru do dump ) i sprawdzanie, czy w danych nie ma czegoś nieoczekiwanego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja SQL do wyświetlania liczby w słowach bez użycia funkcji bezpośredniej (wyrocznia)

  2. Przykład Oracle Bulk Collect przy użyciu obiektu typu kursora typu Rowtype

  3. Jak używać XPath ze zmienną w Oracle XMLTable?

  4. Polimorfizm LINQ-to-XYZ?

  5. Funkcja RPAD() w Oracle