Ich importiere Daten aus einer Tabelle mit Roh-Feeds in Varchar. Ich muss eine Spalte in varchar in eine Zeichenfolgenspalte importieren. Ich habe versucht, das <column_name>::integer
sowie zu verwenden, to_number(<column_name>,'9999999')
aber ich erhalte Fehler, da es einige leere Felder gibt, muss ich sie als leer oder null in die neue Tabelle abrufen.
Bitte lassen Sie mich wissen, ob es eine Funktion dafür gibt.
postgresql
casting
Vijay DJ
quelle
quelle
Antworten:
Wilde Vermutung: Wenn Ihr Wert eine leere Zeichenfolge ist, können Sie NULLIF verwenden, um ihn durch eine NULL zu ersetzen:
quelle
Sie können sogar noch einen Schritt weiter gehen und dieses zusammengeführte Feld einschränken, wie zum Beispiel:
quelle
Wenn Sie leere Spalten als
NULL
s behandeln müssen, versuchen Sie Folgendes:Wenn Sie jedoch
NULL
Werte haben , die Sie vermeiden müssen, versuchen Sie Folgendes:Ich stimme zu, Fehlermeldung würde viel helfen.
quelle
Der einzige Weg, wie ich keinen Fehler aufgrund von NULL, Sonderzeichen oder leeren Zeichenfolgen habe, ist folgender:
quelle
WHERE <column> != NULL
?Ich kann Lukas 'Beitrag nicht kommentieren (zu wenig Ruf? Ich bin ziemlich neu).
Auf meinem PG
to_number(NULL)
funktioniert das Setup nicht, daher wäre meine Lösung:quelle
NULLIF()
Ansatz entsprechen. Der Standard definiert NULLIF tatsächlich als eine Form des CASE-Prädikats.Wenn der Wert nicht numerische Zeichen enthält, können Sie den Wert wie folgt in eine Ganzzahl konvertieren:
Der CASE-Operator überprüft die <Spalte>. Wenn sie mit dem Ganzzahlmuster übereinstimmt, konvertiert er die Rate in eine Ganzzahl, andernfalls gibt er 0 zurück
quelle
Sie können diese Abfrage verwenden
quelle
Gemeinsames Problem
Geben Sie naiv einen beliebigen String in eine solche Ganzzahl ein
Oft ergibt sich der berühmte Fehler:
Problem
PostgreSQL hat keine vordefinierte Funktion zum sicheren Eingeben eines Strings in eine Ganzzahl.
Lösung
Erstellen Sie eine benutzerdefinierte Funktion, die von der intval () - Funktion von PHP inspiriert ist .
Verwendung
quelle