おそらく、次の TSQL コードが役に立ちます。
DECLARE @email varchar(200)
SELECT @email = 'John Doe jdoe@aol.com'
SELECT REVERSE(SUBSTRING(REVERSE(@email), 0,CHARINDEX(' ', REVERSE(@email))))
そのステートメントは次を返します。
jdoe@aol.com
ロジックを通して話す:
- メール欄を反転
- 最初の ' ' 文字のインデックスを見つけます ... ここまでのすべてが実際のメール アドレスです
- (反転された) 文字列の先頭から、手順 2 で見つかったインデックスまで、列を部分文字列化します。
- 文字列をもう一度逆にして、正しい順序にします。
もっと洗練された方法があるかもしれませんが、それは機能するので、JOIN の片側に使用できます。電子メール アドレスにスペースを含めることはできないため、最後のスペース (または逆にすると最初のスペース) が実際の電子メール アドレスと親しみやすい電子メール アドレスの区切りになります。私が知る限り、TSQL には LastIndexOf() 関数が含まれていません。これは、二重の Reverse() 関数呼び出しを避けるのに便利でした。