如何在tsql join中做instr

时间:2014-11-18 05:40:35

标签: sql-server sql-server-2008 tsql

我有一张拥有1000万条记录的巨大桌子 我希望将小表中的记录与数百个记录进行匹配 在巨大的表格中提交了full_name(人名,姓名,姓名) 在小表中有3个文件(TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART) 但是firstname / middlename / lastname混合在tiny_table中。

enter image description here

现在我想做两个表的内连接,并希望进行模糊匹配。 我没有使用全文搜索/或包含命令 我们可以使用join(如oracle中的instr fuction)来做到这一点

if (
TINY_TABLE.NAME_PART_1  exists in  Huge_Table  
and
TINY_TABLE.NAME_PART_2   exists in  Huge_Table 
and
TINY_TABLE.NAME_PART_3   exists in  Huge_Table
)
then
    Mark Matched
else
    Mark UnMatched

1 个答案:

答案 0 :(得分:1)

尝试这样的事情。但这不是一个有效的代码。

SELECT DISTINCT a.fullname,
       'Matched' [status]
FROM  (select distinct fullname from huge_table) a
       JOIN tiny_table b
         ON a.fullname LIKE '%' + namepart1 + '%'
             AND a.fullname LIKE '%' + case when len(namepart2)=0 then ' ' else namepart2 end + '%'
             AND a.fullname LIKE '%' + namepart3 + '%'
UNION
SELECT *,
       'Not matched' [status]
FROM   huge_table