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.
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ď č. 1Skú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