一个表格为“John Doe <jdoe@aol.com>
”,而另一个表格为“jdoe@aol.com
”。是否有一个UDF或替代方法,它将第一个字段中的电子邮件地址与第二个字段匹配?
这不是生产代码,我只需要它来运行临时分析。遗憾的是,DB不存储友好和非友好的电子邮件地址。
更新:修正了格式,第一个格式应为<
和>
。
答案 0 :(得分:1)
我会在最后一个空格中拆分电子邮件地址 - 这应该会给你电子邮件地址。确切的代码取决于您的数据库,但有些粗略的伪代码:
email = row.email
parts = email.split(" ")
real_email = parts[ len(parts) - 1 ]
答案 1 :(得分:1)
您应该能够使用LIKE关键字,具体取决于模式与“友好”电子邮件地址的一致程度。
SELECT
T1.nonfriendly_email_address,
T2.friendly_email_address
FROM
My_Table T1
INNER JOIN My_Table T2 ON
T2.friendly_email_address LIKE '%<' + T1.nonfriendly_email_address + '>'
答案 2 :(得分:0)
以下TSQL代码可能对您有所帮助:
DECLARE @email varchar(200)
SELECT @email = 'John Doe jdoe@aol.com'
SELECT REVERSE(SUBSTRING(REVERSE(@email), 0,CHARINDEX(' ', REVERSE(@email))))
该陈述返回:
jdoe@aol.com
通过逻辑说话:
可能有更优雅的方法,但这样可行,因此您可以将它用于JOIN的一侧。 它的工作原理是因为电子邮件地址不能包含空格,因此最后一个空格(或者当你将其反转时)将是实际电子邮件地址和友好电子邮件地址之间的分隔符。 据我所知,TSQL不包含LastIndexOf()函数,这样可以避免双重Reverse()函数调用。
答案 3 :(得分:0)
您可以使用LOCATE方法进行连接,例如......
SELECT * FROM table1 JOIN table2 ON (LOCATE(table2.real_email, table1.friend_email) > 0)