Guest User

Untitled

a guest
Jun 23rd, 2018
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. DECLARE @outlook nvarchar(max)='Something.something@email.com;Anne Hathaway < Anne.Hathaway@Email.com >; Albert Einstein < Albert.Einstein@email.com >; Ash Ketchum < Ash.Ketchum@mail.com >';
  2.  
  3. WITH semi AS (
  4. SELECT CAST(NULL AS nvarchar(255)) AS part, @outlook AS remain
  5. UNION ALL
  6. SELECT CAST(LEFT(remain, CHARINDEX(';', remain+';')-1) AS nvarchar(255)),
  7. CAST(SUBSTRING(remain, CHARINDEX(';', remain+';')+1, LEN(remain)) AS nvarchar(max))
  8. FROM semi
  9. WHERE remain!='')
  10.  
  11. SELECT +LEFT(addr, CHARINDEX('>', addr+'>')-1)
  12. FROM (
  13. SELECT LTRIM(SUBSTRING(part, CHARINDEX('<', part)+1, LEN(part))) AS addr
  14. FROM semi
  15. WHERE part IS NOT NULL
  16. ) AS sub;
  17.  
  18. WITH semi AS (
  19. SELECT CAST(NULL AS nvarchar(255)) AS part, @outlook AS remain
  20. UNION ALL
  21. SELECT CAST(LEFT(remain, CHARINDEX(';', remain+';')-1) AS nvarchar(255)),
  22. CAST(SUBSTRING(remain, CHARINDEX(';', remain+';')+1, LEN(remain)) AS nvarchar(max))
  23. FROM semi
  24. WHERE remain!='')
  25.  
  26. SELECT SUBSTRING(CAST((
  27. SELECT '; '+LEFT(addr, CHARINDEX('>', addr+'>')-1)
  28. FROM (
  29. SELECT LTRIM(SUBSTRING(part, CHARINDEX('<', part)+1, LEN(part))) AS addr
  30. FROM semi
  31. WHERE part IS NOT NULL
  32. ) AS sub
  33. FOR XML PATH(''), TYPE) AS nvarchar(max)), 3, 10000);
  34.  
  35. SELECT STRING_AGG(RTRIM(LTRIM(REPLACE(REPLACE(b.[value], '<', ''), '>', ''))), '; ')
  36. FROM STRING_SPLIT(@outlook, ';') AS a
  37. CROSS APPLY STRING_SPLIT(a.[value], ' ') AS b
  38. WHERE b.[value] LIKE '%@%';
Add Comment
Please, Sign In to add comment