Hallo ich habe folgendes Problem.
Ich habe eine Tabelle mit einer Spalte "Annotation". Eine Zeile daraus sieht ungefähr so aus:
INCREASE_UNLOCKSbyStacey(2011-03-28);INCREASE_UNLOCKSbyStacey(2011-03-28),INCREASE_UNLOCKSbyStacey(2011-03-28)
Diesen Wirrwarr möchte ich jetzt mit einer Abfrage bei jedem KOMMA und jedem SEMIKOLON trennen und den Inhalt jeweils in eine neue Spalte in der selbe Zeile schreiben.
Ich möchte quasi das erreichen, was ich in Excel über die Funktion "Text in Spalten" erzielen kann.
Wie realisiere ich das in postgre SQL?
Ich benutze übrigens nicht das pstgre SQL plugin sondern den ganz normalen Abfragegenerator.
lG
Stefan
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Ja ist unterschiedlich...
Ja, komme ich ja auch nicht, deshalb frag ich doch, wie es geht.
WIe soll ich es denn sonst machen?
Gibt es denn per SQL keine Möglichkeit exakt das gleiche zu machen, was Excel über die Funktion "Text in Spalten" veranstaltet??
lG
Alternativ:
Eine SQL-Funktion die folgende Funktion aus Excel ersetzt würde ja schon reichen, oder?:
=WENN(LÄNGE(Annotation)>1;--TEIL(Annotation;SUCHEN(";";Annotation)+1;10);"")
Bekomme das nur für das erste Komma auf die Reihe:
SELECT
annotation,
strpos(annotation,','),
rpad(annotation, strpos(annotation,',')-1),
Weiter weiß ich nicht, da ich weder die Funktion Rechts oder Links in postgre SQL finde, noch weiß wie das überhaupt gehen soll, dass er jetzt das nächste Komma oder Semikolon sucht und diesen Inhalt dann in eine neue Spalte packt.
Kann mir da jemand helfen??
Was Du meiner Meinung nach brauchst ist eine Funktion, die in einer Schleife durch Deine jetzige Tabelle durchgeht und die Zerlegung macht. Diese Funktion erstellt dann eine Tabelle in einem normalisierten Datenmodell.
Ich hab jetzt grad weder Zeit noch Lust, Dir das zu machen. Im netz findest Du aber massig Beispiele für sowas, schon in der Doku zu PostgreSQL / plpgsql.
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Exakt. Genau sowas benötige ich.
Kannst du mir vielleicht noch einen Hinweis geben unter was ich da genau schauen muss? Habe bisher dort noch nicht mal eine Funktion LEFT oder RIGHT gefunden.??
split_part z.B., PostgreSQL: Documentation: Manuals: PostgreSQL 9.0: String Functions and Operators
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
MIt split_part hab ich auch schon versucht:
split_part(annotation, ',',1),
Damit bekomme ich halt alles Links vom ersten Komma in eine Spalte. Die Schleife, die ich brauche um durch alles zu iterieren, ist allerdings etwas von dem ich absolut keine Ahnung habe.
Muss ich mir wohl irgendwie externe Hilfe holen oder gucken ob das hier irgendjemand weiß. Ich hab sonst eig nur mit Excel zu tun und brauche SQL nur für normale Abfragen aber nicht um dort komplexe Formelarbeiten aus Excel zu erledigen.
Alles ein mist...
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen