Mam ogromny stół z 1000 milionami rekordów jachcę dopasować rekordy z małego stolika do rekordów w setkach W ogromnej tabeli zapisano imię i nazwisko (imię osoby, imię imię i nazwisko nazwisko) W malutkiej tabeli mają 3 pola (TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART) Ale imię / imię / nazwisko / nazwisko są pomieszane w tabeli mała_tabela.
Teraz chcę wykonać wewnętrzne łączenie obu tabel i chcę wykonać rozmyte dopasowanie. Nie używam wyszukiwania pełnotekstowego / lub zawierają polecenia Czy możemy to zrobić za pomocą join (jak instruktaż w 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
Odpowiedzi:
1 dla odpowiedzi № 1Spróbuj czegoś takiego. Ale to nie jest wydajny kod.
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