2014-07-26 129 views
0

我想知道,如果有任何語法替換數據庫這樣的鏈接:MySQL的替換字符串變量

<!-- m --><a class="postlink" href="link">text</a><!-- m --> 

成類似:

[url=link]text[/url] 

我知道,我可以讓在記事本++中dump和relpace它,但是最好在mysql中爲我做。

+0

請做出明確的描述。表示您希望本文和數據庫反之亦然? @Flip Fratczak –

+1

這將可能實現使用正則表達式,但我認爲沒有一個搜索和替換函數接收正則表達式作爲參數在MySQL中。出於這個原因,試試這個:https://github.com/hholzgra/mysql-udf-regexp。 – Luka

+0

同意@Luka。 Regexp會很好,不幸的是,在MySQL中,它只支持檢查(如[這裏討論的](http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql)) –

回答

0

使用INSTR和SUBSTR可以排除Url和Title。例如,創建測試數據:

CREATE TABLE TableName (url varchar(255)); 
INSERT INTO TableName VALUES 
     ('<!-- m --><a class="postlink" href="link">A</a><!-- m -->'); 

查詢鏈接,'">'之間'href="'

select 
    substr(url, instr(url, 'href="')+6, instr(url, '">')-instr(url, 'href="')-6) link 
    from TableName; 

+------+ 
| link | 
+------+ 
| link | 
+------+ 

查詢標題和'</a>'之間'">'

select 
    substr(url, instr(url, '">')+2, instr(url, '</a>')-instr(url, '">')-2) title 
    from TableName; 

+-------+ 
| title | 
+-------+ 
| A  | 
+-------+ 

更新所有需要的行

UPDATE TableName 
    SET url = concat('[url=', substr(...), ']', substr(...), '[/url]') 
    WHERE url like '%<a href=%';