【问题标题】:comparing two string arraylists or lists比较两个字符串数组列表或列表
【发布时间】:2010-08-28 05:00:19
【问题描述】:

我有两个 SQL 表,其中包含我想要比较的数据。这些表具有以下结构:

id, title,url

我想按标题比较表格,如果字符串相似或相等,将通过将记录写入文件来记录。有人建议不要在 SQL 中这样做,而是将数据复制并在 .net 中用作列表进行比较。

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

标题的典型例子:

表 1 - KPTH Fox 44 通过

表 2 - KPTH Fox44

我尝试在带有通配符 '%' 的 sql 中使用 LIKE,但他仅适用于这些类型的示例,并且不适用于

ABC

MSabC

【问题讨论】:

  • 平等很容易测试,但“相似”可能是主观的,很难提供令人信服的答案。也许您可以更详细地说明“相似”的含义。
  • vbNewbie,您必须更清楚地了解“相似”。这是这个问题的核心,而不是列表或 SQL。

标签: .net sql comparison


【解决方案1】:

这会更容易在数据库中完成,然后返回匹配项的数据集。假设这两个表是相同的,并且您只匹配标题,您的 SQL 将如下所示:

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

然后遍历结果集中的每条记录,并将您想要的任何字段写入文件。

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

编辑:基于“相似”要求,您可以在 SQL 中使用SOUNDEX 命令来比较它们是否听起来相似。 See MSDN 了解有关 SOUNDEX 命令的更多信息。

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

这真的不是一个非常简单的任务,我认为有人能够给你一个答案。不过,我确信大学的教授正在研究这个问题。

【讨论】:

  • 我认为像这样使用纯 SQL 解决方案的困难在于它只测试相等性。它也不适用于模糊相似性分析。
  • @kbrimington 我明白你的意思。他可以尝试 SQL 中的SOUNDEX 命令,这可能会满足“类似”的要求。我已经编辑了我的答案以反映它。
  • SOUNDEX...这类似于 vb.net 中的 COMPARE。
  • @vbNewbie 阅读了我在上面发布的 MSDN 链接,他又是:msdn.microsoft.com/en-us/library/ms187384.aspx 我不认为它像 Compare,因为它是一种“听起来像”的比较方法.
  • @Kelsey:SOUNDEX 参考 +1。老实说,我以前从未听说过。阅读文档,我现在可以想到它在工作中的一些用途。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多