2011-03-04 40 views
0

我試圖用一個稍微不同的更新的MySql數據庫替換舊的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

這是你試過的嗎?

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

如果心不是 '] {'

編輯的任何其他OCCURENCES這將取決於:你也可以試試:

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

只是與MySQL文檔檢查語法。 Char_LNEGTH()可能需要是LENGTH() - 我確定你有想法

+0

我試過了一個更詳細的版本,它基本上有一些'WHERE INSTR(field,']')> INSTR(field, '[youtube:')和INSTR(field,']') 2011-03-04 21:01:20

+0

是固定長度的隨機字符數量? – Simon 2011-03-04 21:04:19

+0

是的。正如{Video ID}一樣,如果有幫助。這是一個YouTube視頻ID,例如:'NOgU4aJtXF8'。事後看來,我應該用*做的方式代表它。 – 2011-03-04 21:25:00