gpt4 book ai didi

sql - 使用函数匹配字符串

转载 作者:行者123 更新时间:2023-12-05 01:35:04 26 4
gpt4 key购买 nike

我正在寻找一种模糊匹配字符串(在我的例子中是联系人姓名)的方法,以查看数据库中可能存在重复项的位置。 “重复”实际上是名称非常相似的情况,因为每一行都有唯一的数据。

我环顾四周,认为是这样的:JaroWinkler Function最适合我的需要,它适用于小型字符串集。

但是,我希望比较大约 260,000 个不同的字符串,并想看看是否有一种方法可以避免检查所有可能的组合(因为这会给我大约 290 亿行检查)。

就目前而言,我对小样本集使用的查询:

CREATE TABLE #data
(
ROW INT IDENTITY (1,1)
,string VARCHAR(50)
)

INSERT INTO #data SELECT 'Watts' AS string
UNION ALL SELECT 'Burns'
UNION ALL SELECT 'McLaughlan'
UNION ALL SELECT 'Darry'
UNION ALL SELECT 'Storie'
UNION ALL SELECT 'Mcluangan'
UNION ALL SELECT 'Burnsysx'

SELECT
data1.string as string1
,data1.row as row1
,data2.string as string2
,data2.row as row2
,dbo.JaroWinkler(data1.string,data2.string) as correlation
from #data data1
CROSS JOIN #data data2
WHERE data1.row < data2.row

对于此示例数据,它返回 21 行,但我只对相关性高于 0.7 的行感兴趣,因此可以从输出中删除其中的大部分,如果可能甚至不用作比较点。

因此对于上面的示例数据,我想返回以下行:

string1 row1    string2 row2    correlation
McLaughlan 3 Mcluangan 6 0.8962954
Burns 2 Burnsysx 7 0.874999125

我知道使用不等式三角连接不是一个好主意,那么使用游标会更好吗?不幸的是,我确实需要相互检查所有记录以确保不存在重复项。

出于测试目的,可以使用 Difference(data1.string,data2.string),仅过滤值 = 4 的情况(这样我至少可以了解如何最好地推进这个)!

谢谢!

最佳答案

SSIS 中的模糊逻辑功能可能值得一试,如果您还没有尝试过的话。它可能比您拥有的查询性能更高,并且具有更多“可调整”参数。设置相对容易。

http://msdn.microsoft.com/en-us/magazine/cc163731.aspx

关于sql - 使用函数匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com