查找多行之间最长的公共字符串



这个问题是基于SQL:找到我问的行之间最长的公共字符串,但我没有解释清楚,所以我会再试一次。我有表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或其他东西中使用某种模糊字符串匹配?谢谢。

这个注释太长了

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

你可以用Python来做这些工作,但它的工作量仍然是一样的。

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

我的建议是考虑如何用Python或Java等语言从算法上解决这个问题。如果你搜索,可能会在某个地方找到一个内置的库。然而,我对此表示怀疑。您可能会找到用于两个字符串的例程,但对于多个字符串,这个问题要困难得多。

最新更新