Trennen Sie kommaseparierte Spaltendaten in zusätzliche Spalten
Habe ich Komma-getrennte Daten in einer Spalte:
Column
-------
a,b,c,d
Möchte ich teilen Sie die Komma-separierte Daten in mehrere Spalten bekomme diese Ausgabe:
Column1 Column2 Column3 Column4
------- ------- ------- -------
a b c d
Wie kann das erreicht werden?
InformationsquelleAutor der Frage Gallop | 2011-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Anzahl der Felder in der CSV-ist konstant, dann könnte man etwas wie das hier tun:
Beispiel:
Wenn die Anzahl der Felder in der CSV-ist nicht konstant, dann konnte man die maximale Anzahl von Feldern mit so etwas wie dies:
erstellen und dann die entsprechenden
a[1], a[2], ..., a[M]
Liste der Spalte der Abfrage. Also, wenn die oben Gaben Sie ein Maximum von 6, die Sie verwenden würden:Könnte man die Kombination dieser beiden Abfragen in eine Funktion, wenn Sie wollten.
Zum Beispiel, geben Sie diese Daten (das ist eine NULL in der letzten Zeile):
Da dein Trennzeichen ist ein einfaches fixed string, Sie können auch
string_to_array
stattregexp_split_to_array
:Dank Michael für die Erinnerung über diese Funktion.
Sollten Sie wirklich redesign Ihrer Datenbank-schema zu vermeiden, die CSV-Spalte, wenn überhaupt möglich. Sollten Sie mit Hilfe eines array-Spalte oder einer separaten Tabelle statt.
InformationsquelleAutor der Antwort mu is too short
split_part()
tut, was Sie wollen in einem Schritt:Fügen Sie so viele Zeilen, wie Sie Elemente in
col
(das maximal mögliche). Spalten überschreiten Datenelemente werden leere Zeichenfolgen (''
).InformationsquelleAutor der Antwort Erwin Brandstetter
Können Sie die split-Funktion.
InformationsquelleAutor der Antwort vicky