разбирать результаты в MySQL через REGEX - PullRequest
1 голос
/ 10 марта 2010

Я немного запутался в функциональности поддержки REGEX для MySQL, и мне еще предстоит найти хороший пример того, как отделить результат с помощью REGEX within an sql statement.

Пример:

Как я могу получить данные из таблицы электронных писем, которые выглядят примерно так ...

+-------------------------+
|Emails                   |
|-------------------------|
|Some.email@yourDomain.com|
+-------------------------+

и вернуть что-то через SQL-оператор, который выглядит как ...

+------------------------------+
|Username   |  Domain    | TLD |
|-----------|------------|-----|
|some.email | yourdomain | com |
+------------------------------+

Ответы [ 2 ]

8 голосов
/ 10 марта 2010

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 = все после последнего '.'
0 голосов
/ 17 марта 2010

Вы также можете попробовать,

select substring_index(email, '@', 1) username
       ,substring_index(substring_index(email, '@', -1), '.',1) domain
       ,substring_index(email, '.', -1) tld
from 
( select 'Some.email@yourDomain.com' email ) E

Используется только substring_index. 1-й substring_index все слева от '@', 3-й (внутренний substring_index) справа от '@', который затем анализируется 2-й подстрокой, чтобы получить домен, и, наконец, последняя вытягивает все справа от '.'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...