2016-08-11 7 views

答えて

-1

これは動作するはずです:あなたはこのを探している

select SUBSTRING(
     @email, --input string 
     charindex('@', @email) + 1, --character just after the @ 
     charindex('.', @email, charindex('@', @email)) - charindex('@', @email) - 1 --distance between @ and the first . following it 
     ) 
+0

電子メールアドレスの先頭に「firstname.lastname @ example.com」のような '.'がある場合、この解決策は機能しません。 – Henry

+0

この問題を解決するために更新されました。 – morgb

-1

。この

select SUBSTRING(
    '[email protected]', --input string 
    charindex('@', '[email protected]') + 1, 
    (len('[email protected]')-charindex('@', '[email protected]'))-4 
       ) 
+0

このコードにはいくつかの引数がありません。実際に何をしようとしているのか解説することはできません。コードをテストしてコメントを追加するかもしれません。 – morgb

+0

ありがとうございます、今は正しいです。 – Henry

0

後にドメインの最初の部分を返す必要があります有効なemailAddressではない値の場合はNULL(またはそこに置いたもの)を返します。無効な値eが発生しました。

0
DECLARE @emailAddress TABLE (emailAddress VARCHAR(255)) 
INSERT @emailAddress (emailAddress) 
VALUES ('[email protected]'), 
     ('[email protected]'), 
     ('notanemailaddress') 

SELECT IIF(emailAddress LIKE '%@%.%', -- Confirm it has valid structure 
      SUBSTRING(emailAddress, 
         CHARINDEX('@',emailAddress)+1, 
         CHARINDEX('.',emailAddress,CHARINDEX('@',emailAddress))-(CHARINDEX('@',emailAddress)+1)), --Extract the domain 
      NULL) -- Provide default value if not an emailAddress 
     AS emailDomain 
FROM @emailAddress 

このアカウントを試す

Select substring(@email,charindex('@', @email)+1, 
charindex('.',right(@email,len(@email) - charindex('@', @email)))-1) 

メールアドレスは、前.複数回含めることができ、@後、これは@

関連する問題

 関連する問題