FEHLER: ungültige Eingabesyntax für Typ numerisch: ""

Leute,

Ich habe das folgende Problem in einem PGAdmin in der neuen Datenbank, während ich in der alten Datenbank kein Problem habe.

FEHLER: ungültige Eingabesyntax für Typ numerisch: “”

Ohne Deine SQL Abfrage kann man das nicht beantworten.

Mal in’s Blaue geraten: Du hast einen Fehler beim Datenbankdesign gemacht und speicherst Zahlen in einer Spalte die als text oder varchar definiert ist. Eine Konsequenz dieses Fehlers ist, dass Du jetzt dauernd diese Strings in Zahlen umwandeln musst und dabei kommt der Fehler, richtig?

1 „Gefällt mir“

WÄHLEN SIE A.* AUS ABC.ICM A
INNERE VERBINDUNG
ABD.WRK EIN
IMC_REF_NO = SRC_REF_NO::NUMERIC;
IMC_REF_NO ist numerisch (25,0)
SRC_REF_NO ist CHARACTER variabel (100);

Fehler:

FEHLER: ungültige Eingabesyntax für Typ numerisch: „“
SQL-Status: 22P02

Vielleicht solltest Du die Statements nicht durch den Übersetzter jagen.

Die Fehlermeldung deutet darauf hin, dass in der falsch definierten Spalte, ein “Leerstrings” drin stehen (also nicht NULL, sondern '')

Die korrekte Lösung des Problems ist, die Spalte zu numeric zu ändern.

alter table wrk
  alter column src_ref_no type numeric 
  using nullif(trim(src_ref_no), '')::numeric;

Wenn Du weiterhin mit dem fehlerhaften Datenbankdesign arbeiten willst (oder musst), dann musst Du das eben so machen:

IMC_REF_NO = nullif(trim(SRC_REF_NO,''))::NUMERIC
1 „Gefällt mir“

@castorp @pogomips

Vielen Dank. Ich werde dieses DB-Fehlerdesign meinem Vorgesetzten melden. Danke.

Alternativ: lass ihn damit arbeiten und mit den Fehler kämpfen.
Wenn er das falsch gemacht hat, soll er auch die Konsequenzen tragen :wink:

Aber leider kommt es sehr häufig vor, dass diejenigen, die solche Fehler machen, nicht die Konsequenzen spüren müssen.

1 „Gefällt mir“