sql >> Databasteknik >  >> RDS >> Oracle

TO_CHAR(tal) Funktionen returnerar ORA-01722:ogiltigt nummer

Jag antar att qty definieras som en varchar2 i my_table -- annars skulle det inte finnas något syfte med att anropa to_number . Om det antagandet är korrekt, kommer jag att satsa på att det finns någon annan rad i tabellen där qty innehåller icke-numeriska data.

SQL är ett uppsättningsbaserat språk så Oracle (eller någon annan databas) är helt fri att utvärdera saker i vilken ordning som helst. Det betyder att Oracle är helt fritt att utvärdera to_number(qty) uttryck innan du använder id=12345 predikat. Om Oracle råkar stöta på en rad där qty värdet kan inte konverteras till ett tal, det ger ett fel.

Det är också möjligt att det finns vissa icke-numeriska data i den specifika raden där id = 12345 som råkar inte visas (kontrolltecken till exempel). Du kan kontrollera det genom att köra frågan

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

(om du vill ha decimal snarare än hexadecimal, använd 1010 som den andra parametern för att dump ) och kontrollerar om det finns något oväntat i datan.



  1. PHP bulk infoga foreach

  2. Oracle 11.1.0.7 och WAMP oci_connect-fel

  3. Laravel Databas Schema, Nullable Foreign

  4. mysql-fråga för tidszonkonvertering