【SQL Server】メールアドレスの@より前と後を分割して取得する

@の位置を取得して、その前後を取得すればOK。

/*サンプルテーブル*/
with sampleTable as (
	select 'hoge@example.com' as mailAddress union
	select 'hoge2@example.com' union
	select 'invalid_address'
)

select
	mailAddress as [メールアドレス],
	/*@より前の値を取得する*/
	substring(mailAddress, 0, charindex('@',mailAddress)) as [ローカルパート],
	/*@より後の値を取得する(末尾は適当に長くしている…)*/
	substring(mailAddress, charindex('@',mailAddress) + 1, 999) as [ドメインパート]
from
	sampleTable
where
	/*@が無いものはメールアドレスではないので除いておく*/
	mailAddress like '%@%'