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.