MySQL可以replace多个字符吗?

我试图在MySQL字段中replace一堆字符。 我知道REPLACE函数,但是一次只replace一个string。 手册中看不到任何适当的function。

我可以一次更换或删除多个string吗? 例如,我需要用破折号replace空格,并删除其他标点符号。

您可以链接REPLACE函数:

select replace(replace('hello world','world','earth'),'hello','hi') 

这将打印hi earth

你甚至可以使用子查询来replace多个string!

 select replace(london_english,'hello','hi') as warwickshire_english from ( select replace('hello world','world','earth') as london_english ) sub 

或者使用JOIN来replace它们:

 select group_concat(newword separator ' ') from ( select 'hello' as oldword union all select 'world' ) orig inner join ( select 'hello' as oldword, 'hi' as newword union all select 'world', 'earth' ) trans on orig.oldword = trans.oldword 

我将使用公共表格expression式作为读者的练习;)

级联是mysql用于多字符replace的唯一简单而直接的解决scheme。

 UPDATE table1 SET column1 = replace(replace(REPLACE(column1, '\r\n', ''), '<br />',''), '<\r>','') 

REPLACE做了一个简单的工作,用stringreplace字符或短语。 但是,当清理标点符号时,您可能还需要查找模式,例如文本特定部分的空白或字符序列,例如在词的中间或完全停止之后。 如果是这样的话,你可能会发现这个自定义的正则expression式replace函数更强大。

我一直在使用lib_mysqludf_preg ,它允许你:

在MySQL中直接使用PCRE正则expression式

安装这个库,你可以做这样的事情:

 SELECT preg_replace('/(\\.|com|www)/','','www.example.com'); 

哪个会给你:

 example 

我会build议运行一个程序来遍历你的logging,处理字段,然后更新它们。 也许一个简单的Perl或PHP脚本。