组合名称列LIKE另一个

时间:2016-02-04 14:36:56

标签: sql-server

我有table1.name和table2.name中的2个名称列。我在table1.name中有名字,比如" Alex Testing"在table2.name它"亚历山大测试"。我让桌子做了一些其他棘手的事情,但它没有认识到亚历克斯和亚历山大是同一个人,所以它不会在我的报告中包含这个名字。我想知道是否有一种方法可以通过名字甚至姓氏来获得这两个内连接,就好像另一个表具有相同的名字但姓氏不同?

我试过了:

SELECT 
   Table1.[Name], Table2.[Time], 
   CASE WHEN myvariables here then 0 ELSE 1 END AS columnB
INTO NewTable
FROM 
   Table1 INNER JOIN Table2
      ON Table1.[Name] LIKE ('%' + Table2.Name + '%')

然而它仍然不起作用,它不会识别Alex的名字。

我也尝试过:

SELECT 
   Table1.[Name], Table2.[Time], 
   CASE WHEN myvariables here THEN 0 ELSE 1 END as columnB
INTO NewTable
FROM 
   Table1 INNER JOIN Table2
      ON Table1.[Name] LIKE CONCAT('%',"Table2.Name", '%')

1 个答案:

答案 0 :(得分:1)

尝试:

 SELECT 
       Table1.[Name], Table2.[Time], 
       CASE WHEN myvariables here then 0 ELSE 1 END AS columnB
    INTO NewTable
    FROM 
       Table1 INNER JOIN Table2
          ON  SUBSTRING(Table1.[Name], CHARINDEX(' ', Table1.[Name]) + 1, LEN(Table1.[Name])) = SUBSTRING(Table2.[Name], CHARINDEX(' ', Table2.[Name]) + 1, LEN(Table2.[Name]))

如果你有大量表,你可能想要使用子查询并直接选择姓氏,然后在姓氏上使用连接。