MySQL не имеет встроенной функциональности, чтобы выполнять то, что вы просите. Это было бы возможно путем определения некоторых новых функций, но, вероятно, проще сделать это на любом языке программирования, к которому вы обращаетесь к базе данных.
Для чего-то столь же простого, как адрес электронной почты, вам вообще не нужно использовать регулярные выражения, вы можете использовать функцию SUBSTRING_INDEX()
, например:
SELECT
SUBSTRING_INDEX(email, '@', 1) AS Username,
SUBSTRING_INDEX(SUBSTR(email, LOCATE('@', email)), '.', 1) AS Domain,
SUBSTRING_INDEX(email, '.', -1) AS TLD
FROM users;
На словах это:
- Имя пользователя = все до первого '@'
- Домен = все, что находится между первым '@' и первым '.'
- TLD = все после последнего '.'