2010-08-28 50 views
0

我有两个SQL表与我想比较的数据。该表具有以下结构:比较两个字符串arraylists或列表

id, title,url 

我想标题的列表相比较,其中如果字符串相似或相同,将通过写记录到文件中注明。有人建议不要在SQL中执行此操作并复制数据,并将其用于.net中作为列表进行比较。

有关如何做到这一点的任何建议?

为标题的典型例子:

表1 - KPTH福克斯44经由

表2 - KPTH Fox44

我尝试使用LIKE与通配符 '%' SQL但他仅适用于在

ABC这些类型的例子,并不会工作

MSabC

+1

平等很容易测试,但“相似”可能是主观的,很难提供令人信服的答案。也许你可以更详细地说明你的意思是“相似”。 – kbrimington 2010-08-28 05:03:49

+0

vbNewbie,你必须更清楚“相似”。这是这个问题的核心,不是列表或SQL。 – 2010-08-28 09:07:00

+0

拼写相似 – vbNewbie 2010-08-29 15:17:26

回答

2

在数据库中这样做会更容易,然后返回匹配项目的数据集。假设两个表是相同的,你匹配的只是标题您的SQL就像:

SELECT [id], [title], [url] 
FROM [Table1] t1 
JOIN [Table2] t2 ON t1.[title] = t2.[title] 

通过在结果集中每条记录然后进行迭代,并写上你要到一个文件的任何领域。

如果你只想坚持SQL,你可以运行查询,然后使用查询工具将数据保存到文件中,如Management Studio或其他。

编辑:根据'类似'的要求,你可以在SQL中使用SOUNDEX命令来比较它们是否听起来相似。有关SOUNDEX命令的更多信息,请参阅See MSDN

编辑2:添加更多关于您的信息添加要求:在SQL中,这种类似的要求可能很困难。您可以将标题解析为单词,然后将它们存储在临时表中,查看多少匹配,然后基于阈值分配匹配条件。它看起来像你的数据也存储一个URL,所以你也可以使用它,并检查基本URL,看看它们是否在进行加权标题检查之前先匹配。我并不完全清楚除了标题以外,你要寻找什么结果。

这真的不是一个非常简单的任务,我认为有人可以给你一个答案。我相信一所大学的教授正在处理这个问题。

+0

我认为使用诸如此类的纯SQL解决方案的困难在于它只会测试是否相等。它不适用于模糊相似性分析。 – kbrimington 2010-08-28 05:13:41

+0

@kbrimington我明白你的观点。他可以尝试SQL中的'SOUNDEX'命令,它可能符合'类似'的要求。我编辑了我的答案以反映它。 – Kelsey 2010-08-28 05:18:01

+0

SOUNDEX ...这与vb.net中的COMPARE类似。 – vbNewbie 2010-08-28 05:21:08