Если вы используете MySQL 8.0, вы можете использовать regexp_replace()
для этого:
select
email,
regexp_replace(email, '\\+[^@].*@+', '@') new_email
from mytable
Это означает следующее: подавление любой последовательности символов, начиная с '+'
до '@'
. Если совпадений нет, regexp_replace()
оставляет строку без изменений.
Демонстрация на DB Fiddle :
with mytable as (
select 'user1@example.org' email
union all select 'user2@example.org'
union all select 'user1+test@example.com'
)
select
email,
regexp_replace(email, '\\+[^@].*@+', '@') new_email
from mytable;
| email | new_email |
| ---------------------- | ----------------- |
| user1@example.org | user1@example.org |
| user2@example.org | user2@example.org |
| user1+test@example.com | user1@example.com |