sql >> Databáze >  >> RDS >> Oracle

TO_CHAR(číslo) Funkce vrací ORA-01722:neplatné číslo

Předpokládám, že qty je definován jako varchar2 v my_table -- jinak by volání to_number nesplnilo žádný účel . Pokud je tento předpoklad správný, vsadím se, že v tabulce je nějaký další řádek, kde qty obsahuje nečíselná data.

SQL je jazyk založený na množinách, takže Oracle (nebo jakákoli jiná databáze) může hodnotit věci v jakémkoli pořadí, které uzná za vhodné. To znamená, že Oracle může zcela svobodně vyhodnotit to_number(qty) výraz před použitím id=12345 predikát. Pokud Oracle náhodou narazí na řádek, kde je qty hodnotu nelze převést na číslo, vyvolá to chybu.

Je také možné, že v konkrétním řádku, kde id = 12345 jsou nějaké nečíselné údaje které se náhodou nezobrazují (například řídicí znaky). Můžete to zkontrolovat spuštěním dotazu

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

(chcete-li decimální místo hexadecimální, použijte 1010 jako druhý parametr pro dump ) a zkontrolujte, zda v datech není něco neočekávaného.



  1. Jaký je nejlepší přístup k nalezení všech adres, které jsou v určité vzdálenosti od vybraného bodu

  2. PHP a MySQL s Highchart

  3. Proč se cizí klíč nevygeneruje pomocí GORM?

  4. C# 2010, ODP.net, volání uložené procedury předávání pole