sql - SQL Optimize 中的 NGram 查询
问题描述
我正在 Teradata TD16 中编写 SQL 查询。我正在尝试通过 NGrams 匹配两个连接的字符串(即 trigrams - 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
解决方案
推荐阅读
- c# - 在属性的 setter 方法中,值属性是否可能是不同的数据类型
- wpf - WPF 网格未显示
- arrays - 如何对两个数组进行排序并将公共元素快速添加到第三个数组中
- javascript - 在谷歌搜索时,搜索结果显示自定义模板标签
- java - 您如何将对象与可比较对象进行比较?
- html - XSL 的放置位置:选择条件
- java - Eclipse MAT 的 ParseHeapDump 实用程序可以运行 OQL 吗?
- reporting-services - SSRS Rest API - 获取扩展设置
- python - 消息:无效参数:无法在 python 中终止已退出的进程
- java - 添加年份的Java日历问题