SQL加入SSMS

SQL加入SSMS,sql,sql-server,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,我有两个表,需要根据电子邮件ID将它们连接起来。让我用一个例子来演示一下 如果email_id中@之后存在公司名称,则需要使用第1列的email id更新第2列 我认为我们需要编写一个子字符串,从@开始,在(.)之前结束,并进行模式匹配,但我不确定如何做到这一点。如果有人能帮我解决这个问题,我将不胜感激 提前谢谢 根据我的理解,以下查询适用于需求 SELECT A.COMPANYNAME, B.MAILID FROM A JOIN B ON A.COMPANYNAME = B.SUBS

我有两个表,需要根据电子邮件ID将它们连接起来。让我用一个例子来演示一下

如果email_id中@之后存在公司名称,则需要使用第1列的email id更新第2列

我认为我们需要编写一个子字符串,从@开始,在(.)之前结束,并进行模式匹配,但我不确定如何做到这一点。如果有人能帮我解决这个问题,我将不胜感激


提前谢谢

根据我的理解,以下查询适用于需求

SELECT A.COMPANYNAME, B.MAILID
FROM A 
JOIN B ON A.COMPANYNAME =
  B.SUBSTRING(MAILID, CHARINDEX('@',MAILID) + 1, PATINDEX('%.com%', MAILID) - CHARINDEX('@', MAILID) - 1) 
您可以尝试此查询

 update TableA

 set TableA.Column2= Table2.column1

 From TableA inner join Table2 
 on TableA.column1 like  CONCAT('%', left(RIGHT(Table2.column1,LEN(Table2.column1)-CHARINDEX('@',Table2.column1)),LEN(RIGHT(Table2.column1,LEN(Table2.column1)-CHARINDEX('@',Table2.column1)))-CHARINDEX('.',RIGHT(Table2.column1,LEN(Table2.column1)-CHARINDEX('@',Table2.column1)))) ,'%')

请正确对齐文本,使其看起来很糟糕。请使用文本而不是图像。这使得我们在需要的时候更容易繁殖。为什么你不把“我们”包括在“反CDU”中?关于“排除这些后缀”还有什么其他规则?总而言之,这看起来是一个需要尝试和“解决”的可怕问题,而不是您希望在生产中运行的东西。。。你最多只需要做一次数据转换,将你需要的信息提取到它们自己的列中,这样你就可以进行正确(高效)的连接。你想干什么?你可以考虑从这里开始。请阅读并接受答案