2014-09-30 70 views
0

在db.table一個有2行:MySQL的更換困難的條件下

[email protected] 
[email protected] 

我需要更換這些電子郵件地址,以便

[email protected] 
[email protected] 

我提出這種要求

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' 

執行後

[email protected]@example.com 
[email protected] 

看看發生了什麼第一個地址 請幫忙查詢! Thx!

UPD一些電子郵件地址不包含符號 「+」 UPD(2)的符號後的文字 「+」 可能會有所不同

+0

請描述您的預期輸出? – 2014-09-30 11:06:23

回答

0

試試這個:

UPDATE mytable 
SET  email = REPLACE(email, '+text', '') 
WHERE email REGEXP '[email protected]' 

,或者你可以使用一個其中:

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]]]) 
+0

不適合,因爲符號「+」後面的文字可能不同 – 2014-09-30 11:13:26