PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL UPDATE | Suchen und Ersetzen von Strings mit bestimmtem Anfang und Ende


Turrican-2
2013-06-24, 20:39:09
Greetings,

ich stehe vor einem kleinen SQL Problem, welches einem SQL Kundigen wohl nur ein Gähnen entlockt. Nach dem Wechsel meiner Foren-Software werden einige Zeichenketten fehlinterpretiert und dies möchte ich mit einem vermeintlich einfachen Suchen & Ersetzen in phpMyAdmin korrigieren.

Tabelle-Name: phpbb_posts
Tabellen-Spalte: post_text
Beispiel-Ist-Text (zwischen nicht statisch): [qu0te='Guybrush Threepwood',index.php?page=Thread&postID=4277#post4277](...) ob das spiel so lange hebt?
Beispiel-Soll-Test: (...) ob das spiel so lange hebt?

Mein Statement um nach Zeichenketten beginnend mit [qu0te= und endend mit ] zu suchen wäre:

UPDATE phpbb_posts SET post_text = REPLACE (post_text, '[qu0te=%]', '[qu0te]');

Mir ist klar, dass ich mit diesem Statement die Information des Namens und der URL im o.g. Beispiel-Ist-Text verlieren würde. Dies wäre jedoch zu verkraften, falls das o.g. Statement in dieser Form zum Ziel führen würde. Mein PHP Skill begrenzt sich nämlich maximal auf "read only" und "try-and-error".

Für jeden Tipp dankbar :uponder:

P.S. es handelt sich um 237 zu bearbeitende Einträge ;)
SELECT post_text FROM phpbb_posts WHERE post_text LIKE '[qu0te=%'

Gast
2013-06-24, 23:01:04
hello TT Player in the house.. bin kein sql experte aber teste das mal ;)

update phpbb_posts s set s.post_text=concat('[qu0te]', SUBSTRING_INDEX(s.post_text, ']', -2)) where s.post_text=s.post_text;

zaboron
2013-06-26, 16:55:10
hello TT Player in the house.. bin kein sql experte aber teste das mal ;)

update phpbb_posts s set s.post_text=concat('[qu0te]', SUBSTRING_INDEX(s.post_text, ']', -2)) where s.post_text=s.post_text;
Das setzt voraus, dass es keine weiteren tags mit ] im string gibt.

UPDATE phpbb_posts set post_text = concat('[qu0te]',substring_index(post_text, ']',-1*(length(post_text)-length(replace(post_text,']','')))) WHERE post_text LIKE '[qu0te=%'

Turrican-2
2013-06-26, 21:38:48
VIELEN DANK Euch beiden :D

@zaboron
Es hat noch eine concat abschliessende Klammer gefehlt - aber das hab ich gerade noch alleine hinbekommen. Vielen Dank!
UPDATE phpbb_posts set post_text = concat('[quote]',substring_index(post_text, ']',-1*(length(post_text)-length(replace(post_text,']',''))))) WHERE post_text LIKE '[quote=%'