MySQL проверяет записи электронной почты - PullRequest
5 голосов
/ 01 декабря 2011

Я знаю, что вы можете использовать фильтры PHP Email Validate, чтобы проверить, являются ли данные abc @ abc . ext

. В любом случае, я могу выполнить запрос MySQL для этого, проверяя только этот формат стиля.В противном случае мне придется создать сценарий разбиения на страницы и ограничения нагрузки, чтобы выбрать все записи из БД (более 50 000), и сервер уже работает медленно для моего клиента на виртуальном хостинге.

Я просто хочу увидеть списоктолько из действительных электронных писем, а также я могу проверить наличие дубликатов или совпадений с запросом like?

Оценить любой коллаж на этом.

Ответы [ 4 ]

13 голосов
/ 01 декабря 2011

Примерно так

SELECT * FROM users WHERE email NOT REGEXP '^[^@]+@[^@]+\.[^@]{2,}$';

OR

SELECT * FROM users WHERE email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$';

Обновление. Это просто пример того, как использовать регулярные выражения в Mysql.

9 голосов
/ 01 декабря 2011

Вы можете использовать что-то вроде этого

SELECT * FROM your_table
WHERE email_col LIKE '%@%.%'

, чтобы получать (вполне) действительные электронные письма, исключая те, которые ошибочны наверняка.
Но вы должны проверить результаты, чтобы быть уверенными в том, что вы 'вновь показывает ...
Во всяком случае, это отправная точка ...

1 голос
/ 27 января 2018

Запустите этот SQL, чтобы создать триггер внутри базы данных mysql. Это предотвратит вставку неправильно отформатированного электронного письма:

CREATE DEFINER=`root`@`localhost` TRIGGER `users_before_insert` BEFORE INSERT ON `users` FOR EACH ROW BEGIN
IF (NEW.`email` REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$')=0  THEN
        SIGNAL SQLSTATE VALUE '45000'
            SET MESSAGE_TEXT = '[table:users] - `email` incorrect format!';
    END IF;
END
0 голосов
/ 11 декабря 2015

Используйте это, он проверит, где должны быть '@' и '.'в электронном письмеЭто проверено один.

ВЫБРАТЬ * ОТ school ГДЕ email НЕ РЕГЭКСП '^ [a-zA-Z0-9] [a-zA-Z0-9. -] * [a-zA-Z0-9 -..] @ [A-Za-Z0-9] [A-Za-Z0-9 ._-] * [A-Za-Z0-9] \ [A-Za-Z] {2,4} $ ';

...