mysql取代困难的条件

时间:2014-09-30 11:02:40

标签: php mysql

在db.table中有2行:

+79513028643+text@example.com
marin.nikulina2014+text@example.com

我需要更换这些电子邮件地址

+79513028643@example.com
marin.nikulina2014@example.com

我提出了这样的要求

update voters set email = concat( replace( substring_index(email, '@', 1), substring_index(substring(email, 2), '@', 1), substring_index(substring(email, 2), '+', 1) ),'@', substring_index(email, '@', -1)) WHERE voters.key regexp 'a78605bb9b9c5512ab3f7a06f73124ffcdafdddf|32a08a88001074fb59db19a3c3a83eb89f75a052'

执行后

+79513028643@example.com@example.com
marin.nikulina2014@example.com

看看第一个地址发生了什么 请帮忙查询! THX!

更新某些电子邮件地址不包含符号“+” 符号“+”之后的upd(2)文本可能不同

1 个答案:

答案 0 :(得分:0)

试试这个:

UPDATE  mytable
SET     email = REPLACE(email, '+text', '')
WHERE   email REGEXP '+79513028643+text@example.com'

或者您可以使用以下其中一种:

REGEXP_LIKE(text, pattern [, mode])
REGEXP_SUBSTR(text, pattern [,position [,occurence [,mode]]])
REGEXP_INSTR?(text, pattern [,position [,occurence [,return_end [,mode]]]])
REGEXP_REPLACE?(text, pattern, replace [,position [,occurence [,return_end [,mode]]])