/ / comment faire pour joindre tsql - sql-server, sql-server-2008, tsql

comment faire instr dans tsql join - sql-server, sql-server-2008, tsql

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.

entrer la description de l'image ici

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 № 1

Essayez 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