Я пишу SQL-запрос в Teradata TD16.Я пытаюсь сопоставить две сцепленные строки по NGrams (т.е. триграммы - 3-символьные NGrams).Между жалами должна быть хотя бы 1 триграмма.К сожалению, единственный способ сделать это - перекрестное соединение и сопоставление в функции NGram.Есть ли менее ресурсоемкий способ сделать это.
SEL
a.Row_id AS Mstr_Row_Id
,b.Row_id AS Chk_Row_Id
,EditDistance(a.Concant_Addr_Ln_Pc,b.Concant_Addr_Ln_Pc) AS Edit_Distance
,Char_Length(Trim( Both From a.Concant_Addr_Ln_Pc)) AS Char_Len_Test_Addr
,(1.00 * (Char_Len_Test_Addr - Edit_Distance) / NullIfZero(Char_Len_Test_Addr)) *100.00 AS Prcnt
FROM ( SEL * FROM VT_Addr_Master WHERE grp=1 AND Coalesce(Reliable_Score_1,0)< 100 ) AS a
CROSS JOIN VT_Addr_Check AS b
ON Ngram(a.N_Gram_Smpl,b.N_Gram_Smpl,3)>0
QUALIFY Row_Number() Over(
PARTITION BY a.Row_id
ORDER BY Prcnt DESC)=1