На основании вашего комментария "В этом случае я бы просто удалил от" @ "до первого". "" Это даст вам то, что вы хотите, но не уверены, что это то, что вы действительно хотите:
WITH VTE AS(
SELECT *
FROM (VALUES('abc@gmail.com'),
('xyz@google.com'),
('xyz@abc.com'),
('abc@xyz.com'),
('123@stackoverflow.com'),
('def@dba.stackexchange.com'),
('xx@msn.co.uk'),
('abc123@mail.yahoo.co.uk'))V(Email))
SELECT LEFT(D.Domain,CI.Extension-1) AS SubDomain
FROM VTE V
CROSS APPLY (VALUES(STUFF(V.Email, 1,CHARINDEX('@',Email),'')))D(Domain)
CROSS APPLY (VALUES(CHARINDEX('.',D.Domain)))CI(Extension);
Выход:
SubDomain
-----------
gmail
google
abc
xyz
stackoverflow
dba
msn
mail