Hallo!
Ich steh ein wenig auf dem Schlauch. Ich muß QS für eine Menge Daten einer etwas kruden Excel-Datensammlung machen. Dafür hab ich die Daten in ein Datenmodell importiert, die einzelnen Werte sind, da dort (wer hätte das gedacht…) alles Mögliche drinsteht, als Text mit einer spalte (Soll-)Format hinterlegt. Nun will ich automatisiert die Werte in eine gültige Darstellung bringen. Dazu werden z.B. im Falle ‘numeric’ Kommas durch punkte ersetzt, dann soll versucht werden, den Wert zu konvertieren wenn wenn das nicht geht, auf NULL gesetzt werden.
Ich suche also in etwa sowas ähnliches wie dieses Gedankenexperiment:
case when format = 'numeric' then (replace(wert, ',', '.'))::numeric on error NULL end
Sprich, ich möchte den Fehler abfangen, der entsteht, wenn Buchstaben im Wert sind.
Ergänzung: Ich hab den Check jetzt während des Thread-Schreiben mit Regex so gelöst:
select (regexp_match(lower('1234.678'),'([0-9\.]+)'))[1] = lower('1234.678')
Trotzdem würde ich gern wissen ob man in einem SQL-Statement Fehler abfangen kann (ohne eine Funktion zu schreiben ).
Weil:
if you think you have solved a problem with regex, then you have two problems.
Andere Ideen dazu sind natürlich auch willkommen
Viele Grüße
Uwe