Source Orafaq.com
Ein ORA-01722 ("ungültige Nummer") Fehler tritt auf, wenn versucht wird, eine Zeichenkette in einer Reihe
zu konvertieren Wenn eine INSERT INTO tun ... VALUES (. ..) Eines der Datenelemente, die Sie einfügen möchten, ist eine ungültige Zahl.
Suchen und korrigieren Sie es. Wenn alle Zahlen gültig zu sein scheinen, haben Sie wahrscheinlich Ihre Spalten nicht in der richtigen Reihenfolge, und ein Element in der VALUES-Klausel wird in eine NUMBER-Spalte anstelle der erwarteten VARCHAR2-Spalte eingefügt. Dies kann passieren, wenn in einer Tabelle Spalten hinzugefügt oder entfernt werden.
Wenn Sie ein INSERT oder UPDATE mit einer Unterabfrage durchführen, die die Werte liefert. Offensichtlich gelten die vorstehenden Überlegungen auch hier. Was dies komplizierter macht, ist, dass die betreffende Zeichenkette als Zeile in einer Tabelle verborgen ist. Die Lösung besteht darin, die Zeile (oder Zeilen) zu identifizieren, die die nicht numerische Zeichenfolge enthält, und entweder die Daten zu ändern (falls ein Fehler vorliegt) oder der Unterabfrage etwas hinzuzufügen, um sie nicht auszuwählen. Das Problem besteht darin, die genaue Zeile zu identifizieren. Unter der Annahme, dass der fehlerhafte Datenwert ein alphabetisches Zeichen ist, kann man die folgende Abfrage verwenden:
SELECT ... WHERE UPPER(col) != LOWER(col)
wo col die Spalte mit den schlechten Daten ist.