我有一张拥有1000万条记录的巨大桌子 我希望将小表中的记录与数百个记录进行匹配 在巨大的表格中提交了full_name(人名,姓名,姓名) 在小表中有3个文件(TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART) 但是firstname / middlename / lastname混合在tiny_table中。
现在我想做两个表的内连接,并希望进行模糊匹配。 我没有使用全文搜索/或包含命令 我们可以使用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
答案 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