Замена отформатированной строки в MySql - PullRequest
0 голосов
/ 04 марта 2011

Я пытаюсь заменить все экземпляры старой разметки BB-тегов в базе данных MySql более новой, немного другой.

Старый формат такой ...

[youtube:********]{Video ID}[/youtube:********]

Который я бы хотел заменить этим ...

[youtube:********]http://www.youtube.com/watch?v={Video ID}[/youtube:********]

Где * - это случайная строка буквенно-цифровых символов. Так просто REPLACE(feild, '[youtube:********]', '[youtube:********]http://www.youtube.com?watch?v= к сожалению не подойдет.

Все неуклюжие попытки, которые я предпринял, используя REPLACE() и INSTR(), привели к неприятным вещам, таким как [b]Bold Text[/b]http://www.youtube.com/watch?v=

Есть ли способ сделать такую ​​замену шаблона в MySql? Возможно с регулярными выражениями?

Спасибо.

1 Ответ

1 голос
/ 04 марта 2011

Это то, что вы пробовали?

UPDATE table SET Field = REPLACE(Field,']{',']http://www.youtube.com/watch?v={')

Это зависело бы, если бы не было других случаев '] {'

РЕДАКТИРОВАТЬ: Вы также можете попробовать:

UPDATE table SET Field = LEFT(Field,#) + 'http://www.youtube.com/watch?v='+ 
RIGHT(Field,(Char_Length(Field)-#);

Просто проверьте синтаксис с помощью документов MYSQl. Char_LNEGTH (), возможно, должен быть LENGTH () - я уверен, что вы поняли

...