【问题标题】:SQL: Find longest common string between multiple rows [closed]SQL:在多行之间查找最长的公共字符串[关闭]
【发布时间】:2015-05-21 21:47:12
【问题描述】:

这个问题是基于我问的SQL: Find longest common string between rows,但我没有解释清楚,所以我会再试一次。 我有桌子 t1:

Col1   |   Col2
-------|----------------
 1     | THE APPLE 123
 1     | BEST THE APPLE
 1     | THE APPLE 5/89
 2     | BEST TASTY BANANAS
 2     | BEST TASTY BANANAS 42/7
 2     | THE BEST TASTY BANANAS

我想要t2:

Col1    |  Col2
-----------------------------
 1      |  THE APPLE
 2      | BEST TASTY BANANAS

我的整个表有 30,000 条记录。在任何时候我都不必比较超过 21 条记录。 Col2 是 varchar(100)。我正在使用红移。我意识到这是一个难题,有什么方法可以将数据从红移中取出并在 Python 之类的东西中使用某种模糊字符串匹配?谢谢。

【问题讨论】:

  • 你尝试了什么,你的尝试是如何失败的?
  • 你承诺解释清楚,但你什么也没解释。

标签: python sql string amazon-redshift


【解决方案1】:

评论太长了。

您想要做的处理在 SQL 中是极其困难的。您必须编写自己的聚合函数来处理昂贵且不明显的字符串操作。

您可以在 Python 中完成这项工作,但工作量仍然大致相同。

对于 SQL,问题在于数据的格式。您确实需要每个字符或单词一行才能找到最长的匹配子字符串。即使使用这种表示,也很困难,特别是对于长字符串。我认为这很有用的一个应用是基因组学,字符串编码可能有数万或数十万个字符长。

我的建议是考虑如何用算法解决这个问题,比如 Python 或 Java。如果您搜索,可能有一个内置库可以执行此操作。然而,我对此表示怀疑。您可能会找到一个处理两个字符串的例程,但对于多个字符串,问题就比较困难了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2021-02-14
    • 2013-09-13
    相关资源
    最近更新 更多