2014-09-30 2 views
0

А имеют 2 ряда в db.table: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!

обн некоторые почтовые адреса не содержат символ «+» обн (2) текст после знака «+» могут быть различными

+0

Опишите, пожалуйста, ваш ожидаемый результат? –

ответ

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

не подходит, потому что текст после знака «+» может отличаться –

Смежные вопросы