2014-07-26 134 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=%';