0
我想知道,如果有任何語法替換數據庫這樣的鏈接:MySQL的替換字符串變量
<!-- m --><a class="postlink" href="link">text</a><!-- m -->
成類似:
[url=link]text[/url]
我知道,我可以讓在記事本++中dump和relpace它,但是最好在mysql中爲我做。
我想知道,如果有任何語法替換數據庫這樣的鏈接:MySQL的替換字符串變量
<!-- m --><a class="postlink" href="link">text</a><!-- m -->
成類似:
[url=link]text[/url]
我知道,我可以讓在記事本++中dump和relpace它,但是最好在mysql中爲我做。
使用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=%';
請做出明確的描述。表示您希望本文和數據庫反之亦然? @Flip Fratczak –
這將可能實現使用正則表達式,但我認爲沒有一個搜索和替換函數接收正則表達式作爲參數在MySQL中。出於這個原因,試試這個:https://github.com/hholzgra/mysql-udf-regexp。 – Luka
同意@Luka。 Regexp會很好,不幸的是,在MySQL中,它只支持檢查(如[這裏討論的](http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql)) –