電子メールアドレスの列を指定すると、部分文字列の@記号の位置を見つける必要があります。
T-SQLの文字列用のindexof
関数とは何ですか?
文字列内の部分文字列の位置を返すものを探しています。
c#で
var s = "abcde";
s.IndexOf('c'); // yields 2
CHARINDEX はあなたが探しているものです
select CHARINDEX('@', '[email protected]')
-----------
8
(1 row(s) affected)
-または-
select CHARINDEX('c', 'abcde')
-----------
3
(1 row(s) affected)
選ぶべき非常に小さな1つ:
電子メールアドレスのRFCでは、最初の部分に引用符で囲まれた「@」記号を含めることができます。例:
"john@work"@myemployer.com
これは非常にまれですが、起こる可能性があります。理論的には、最初の記号ではなく、last「@」記号で分割する必要があります。
SELECT LEN(EmailField) - CHARINDEX('@', REVERSE(EmailField)) + 1
詳しくは:
CHARINDEX
を使用したいと考えています。あなたはそれについて読むことができます ここ 。