Я пытаюсь стандартизировать адрес электронной почты в поле. Вот несколько примеров этой проблемы я пытаюсь решить:Как найти и удалить токен электронной почты из строки писем в T-SQL?
ex 1 [email protected];[email protected];[email protected]
ex 2 [email protected];[email protected];[email protected]
ex 3 [email protected];[email protected];[email protected];[email protected]
` Я пытаюсь извлечь полезную электронную почту от автогенерируемых писем в строках, подобных этому, так, например, в
(ex 1) Я хотел бы адрес @ aol.com;
in (ex 2) Я хотел бы адрес @ gmail.com;
in (ex 3) Я хотел бы адрес @ comcast.net.
Я попытался найти charindex из самых популярных поставщиков услуг, используя оператор case, но так как я не знаю, сколько символов существует перед символом @, я не понимаю, как использовать метод подстроки.
В строке может быть от 2 до 7 писем. Я знаю, как это сделать для 2. Это было легко, но после этого я понятия не имею. Вот что я до сих пор:
select email, len(email) - len(replace(email,';','')) num_semi
into #tmp1
from staging_transformations
where email != ''
order by len(email) - len(replace(email,';','')) desc
select email,
case
when num_semi = 1 then
case
when SUBSTRING(email,0,charindex(';',email)) like '%@anon.cargurus.com' then
case
when SUBSTRING(email,charindex(';',email) + 1,len(email)) like '%@anon.cargurus.com' then NULL
else SUBSTRING(email,charindex(';',email) + 1,len(email))
end
when SUBSTRING(email,0,charindex(';',email)) like '%@geico.zagdealer.com' then
case
when SUBSTRING(email,charindex(';',email) + 1,len(email)) like '%@geico.zagdealer.com' then NULL
else SUBSTRING(email,charindex(';',email) + 1,len(email))
end
when SUBSTRING(email,0,charindex(';',email)) like '%@truecarcustomer.com' then
case
when SUBSTRING(email,charindex(';',email) + 1,len(email)) like '%@truecarcustomer.com' then NULL
else SUBSTRING(email,charindex(';',email) + 1,len(email))
end
when SUBSTRING(email,0,charindex(';',email)) like '%@carbuyingemail.com' then
case
when SUBSTRING(email,charindex(';',email) + 1,len(email)) like '%@carbuyingemail.com' then NULL
else SUBSTRING(email,charindex(';',email) + 1,len(email))
end
else SUBSTRING(email,0,charindex(';',email))
end
else email
end test,
num_semi
from #tmp1
Я использую T-SQL. Какие-либо предложения?
если вы используете CHARINDEX, чтобы найти положение и comcast.net (например) - тогда вы берете LEFT строки до этой точки - тогда вы ОБЛАДАЕТСЯ в строку и используете CHARINDEX для этого, чтобы найти «;» - тогда вы берете LEFT до этой точки - тогда у вас есть EMAIL-часть имени (но он работает в обратном порядке (поэтому используйте REVERSE для этого и присоедините его обратно к & comcast.net - вам лучше всего создать скалярную функцию, где вы можете использовать переменные и сделать мини-программу - мне пришлось использовать амперсанд вместо символ AT BTW du e в это место – Cato
Что не так с другим адресом электронной почты? –
@JuanCarlosOropeza Они похожи на автоматически созданные адреса электронной почты, когда вы отвечаете на объявление craigslist. Насколько я знаю, эти адреса электронной почты являются «нет ответа» на электронные адреса. – jimjim