sql >> Database >  >> RDS >> Oracle

TO_CHAR(getal) Functie retourneert ORA-01722:ongeldig getal

Ik neem aan dat qty is gedefinieerd als een varchar2 in my_table -- anders zou het geen zin hebben om to_number te bellen . Als die aanname juist is, wed ik dat er een andere rij in de tabel is waar qty bevat niet-numerieke gegevens.

SQL is een op een set gebaseerde taal, dus Oracle (of een andere database) is volkomen vrij om dingen te evalueren in elke gewenste volgorde. Dat betekent dat Oracle volledig vrij is om de to_number(qty) . te evalueren uitdrukking voordat u de id=12345 predikaat. Als Oracle een rij tegenkomt waar de qty waarde kan niet worden geconverteerd naar een getal, er wordt een fout gegenereerd.

Het is ook mogelijk dat er enkele niet-numerieke gegevens in de betreffende rij staan ​​waar id = 12345 die toevallig niet wordt weergegeven (controletekens bijvoorbeeld). U kunt dat controleren door de query uit te voeren

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

(als je decimaal wilt in plaats van hexadecimaal, gebruik dan 1010 als de tweede parameter om dump te gebruiken ) en controleren of er iets onverwachts in de gegevens staat.



  1. Hoe optimaliseer ik de zoekopdrachten van MySQL met constanten?

  2. Entiteit Framework Code Eerste MaxLength en FixedLegth (char vs varchar)

  3. Voeg een kolom toe aan een tabel in alle schema's van een PostgreSQL-database

  4. Is er een equivalent van SHA1() in MS-SQL?