J'ai une énorme table avec 1000 millions de disques jevouloir faire correspondre les enregistrements de la petite table avec des enregistrements dans des centaines Dans une grande table, il est classé nom complet (nom de la personne, prénom nom moyen). Dans la petite table ont 3 fileds (TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART) Mais prénom / nom de milieu / nom de famille sont mélangés dans tiny_table.
Maintenant, je veux faire une jointure interne des deux tables et faire une correspondance floue. Je n'utilise pas la recherche en texte intégral / ou contient la commande Pouvons-nous faire cela en utilisant join (comme instr fuction dans oracle)
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
Réponses:
1 pour la réponse № 1Essayez quelque chose comme ça. Mais ce n'est pas un code efficace.
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