Запрос на возврат только тех строк, которые имеют действительные электронные письма, и выводит только электронные письма - PullRequest
4 голосов
/ 21 февраля 2020

У меня есть старая таблица, в которой есть информация о заявителе, включая человека, который их опросил Name|Phone|Email|Addr|Interv|IntervEmail

к сожалению, электронные письма интервьюера - беспорядок. Некоторые пустые, в некоторых есть номера телефонов, в некоторых есть пробелы или другие специальные символы, такие как this.is.a.mess@anydamnplace.com / 999-222-5555 home или home 999-222-5555, this.is.a.mess@anydamnplace.com

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

любая помощь оценена

пример Из этого

user   | home_phone | applicant_email           | addr      | intrvwr_nm | intrvwr_email
-------+------------+---------------------------+-----------+------------+---------------------------------------------------------------------
Jane   | 1234567890 | someemail@anydamplace.com | 123 here  | Jeff       | jeff@surething.net / 321589364
Larry  | 1234567890 | someemail@anydamplace.com | 123 there | Eddie      | gjfgn@anotherplace.net / 2321.654.9872
harry  | 1234567890 | someemail@anydamplace.com | 456 here  | Murray     | Admissions Field Representative/murray@anotherplace.com/212-222-1111
Carrie | 1234567890 | someemail@anydamplace.com | 456 there | Del        | dely@school.edu
Joe    | 1234567890 | someemail@anydamplace.com | 123 here  | James      | 1234567890/sometext, this.is.a.mess@anydamnplace.com

К этому

user   | home_phone | applicant_email           | addr      | intrvwr_nm | intrvwr_email
-------+------------+---------------------------+-----------+------------+---------------------------------------------------------------------
Jane   | 1234567890 | someemail@anydamplace.com | 123 here  | Jeff       | jeff@surething.net
Larry  | 1234567890 | someemail@anydamplace.com | 123 there | Eddie      | gjfgn@anotherplace.net
harry  | 1234567890 | someemail@anydamplace.com | 456 here  | Murray     | murray@anotherplace.com
Carrie | 1234567890 | someemail@anydamplace.com | 456 there | Del        | dely@school.edu
Joe    | 1234567890 | someemail@anydamplace.com | 123 here  | James      | this.is.a.mess@anydamnplace.com

1 Ответ

3 голосов
/ 21 февраля 2020

Попробуйте выполнить этот запрос. Было бы перехватить большинство действительных адресов электронной почты:

SELECT a.email 
FROM
(
SELECT value as email  
FROM applicant_Table  
    CROSS APPLY STRING_SPLIT(intrvwr_email, ' ') 
) as a
where a.email like '%_@__%.__%'

Пожалуйста, примите во внимание, что:

  1. Это работает только для SQL Server 2016 или выше.
  2. Разделитель - это пробел.

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

...