/ / ako robiť instr v tsql join - sql-server, sql-server-2008, tsql

ako robiť instr v tsql join - sql-server, sql-server-2008, tsql

Mám obrovský stôl s 1000 miliónmi záznamov jachcú zodpovedať záznamy z malého stola so záznamami v stovkách V obrovskej tabuľke sa nachádza plná_zmenka (meno osoby, meno prvej mená) V drobnej tabuľke máte 3 polia (TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART) Ale meno / middlename / priezvisko sú zmiešané v tiny_table.

tu zadajte popis obrázku

Teraz chcem robiť vnútorné pripojenie k obom tabuľkám a chcem robiť fuzzy zhody. Nepoužívam fulltextové vyhľadávanie / alebo obsahovať príkaz Môžeme to urobiť pomocou spojenia (ako inštr fuction v 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

odpovede:

1 pre odpoveď č. 1

Skúste niečo také. Ale to nie je efektívny kód.

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