Memotext zeilenweise lesen, vergleichen, ändern

norwegen60

Benutzer
Beiträge
10
Hallo zusammen,

gibt es eine einfache Möglichkeit den Text eines mehrzeiligen Strings per SQL-Befehl zeilenweise zu lesen und zu vergleichen. So was wie
Code:
Update Table1
Set memo1.line[1] = 'Text'
where not memo1.line[1] = 'Text'
d.h. es soll nur der Text in Zeile 2 ersetzt werden, Zeile 1 und die folgenden Zeilen bleiben unberührt. Sollte zumindest für MsSQL 2008R2 funktionieren.

Bin für jede Hilfe dakbar
Gerd
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.423
Hallo zusammen,

gibt es eine einfache Möglichkeit den Text eines mehrzeiligen Strings per SQL-Befehl zeilenweise zu lesen und zu vergleichen. So was wie
Code:
Update Table1
Set memo1.line[1] = 'Text'
where not memo1.line[1] = 'Text'
d.h. es soll nur der Text in Zeile 2 ersetzt werden, Zeile 1 und die folgenden Zeilen bleiben unberührt. Sollte zumindest für MsSQL 2008R2 funktionieren.

Bin für jede Hilfe dakbar
Gerd

In trivial wohl nicht.

Dein Problem klingt für mich stark nach falschen Design: Du speicherst mehrere Informationen in einem Feld, hier Textfeld, ab. Um die einzelnen Informationen zu trennen nutzt Du ein beliebiges Zeichen, hier den Zeilentrenner. Normalisiere Deine Tabelle und Dein Problem ist gelöst.

Also unvollständiger Ansatz:

Code:
test=*# select * from memotext ;
        t
-----------------
 Text           +
 Zeile2         +
 Zeile3         +
 noch eine Zeile
(1 row)

test=*# select split_part(t,E'\n',2) from memotext ;
 split_part
------------
 Zeile2
(1 row)

Das ist aber noch meilenweit von einer Lösung für die Aufgabe 'ersetze den Text in Zeile 2' entfernt - und ich habe da auch wenig Motivation, da eine Lösung zu suchen.


Andreas
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.582
Also das Datenformat der betreffenden Spalte ist einfach nur TEXT und \n (Zeilenumbruch) ist dein Trennzeichen? Mit VARCHAR würde es sicherlich gehen, wenn auch aufwendig. Mit TEXT eventuell aber das unterliegt mehr Einschränkungen.
http://msdn.microsoft.com/de-de/library/ms187993.aspx
Mit diesen Funktionen musst du den String zerlegen und den entsprechenden Teil ersetzen. Allerdings bietet sich hier tatsächlich eine Änderung des Datenmodells an.
 
Oben