SSMS中的SQL JOINS

时间:2017-04-12 19:42:17

标签: sql sql-server sql-server-2008 sql-server-2008-r2

我有两个表,需要根据电子邮件ID加入它们。让我用例子来说明这一点 enter image description here

如果在email_id中的@之后存在公司名称,则需要使用第1列的电子邮件ID更新第2列

enter image description here

我认为我们需要编写一个从@开始并在(。)之前结束并进行模式匹配的子字符串,但我不知道该怎么做。如果有人能帮助我,我真的很感激。

提前致谢!!

2 个答案:

答案 0 :(得分:0)

根据我的理解,以下查询将适用于要求。

SELECT A.COMPANYNAME, B.MAILID
FROM A 
JOIN B ON A.COMPANYNAME =
  B.SUBSTRING(MAILID, CHARINDEX('@',MAILID) + 1, PATINDEX('%.com%', MAILID) - CHARINDEX('@', MAILID) - 1) 

答案 1 :(得分:0)

您可以尝试此查询

 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)))) ,'%')