Возможно, вам поможет следующий код 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 ().