0

我有两个字符串。我想知道两个字符串中有多少个字符相似。

例如:让我们说“xyzabc”、“xyzadh”。我想知道是否有一个函数可以给出相似性破坏的索引。在这种情况下,它将是 4,因为直到 'xyza' 字符串是相同的。如果字符串是“xyzabc”、“xymabc”,那么结果应该是 2。

我想用它select func('xyzabc', 'xyzwer');来获得所需的答案。如果 SQL 中存在函数,Kinldy 让我知道。

非常感谢提前!!!

4

1 回答 1

0

一种方法是使用正则表达式。这是想法。您将使用 regexp_substr()。在您的示例中,正则表达式将是 'xyzwer|xyzwe|xyzw|xyz|xy|x'。然后,您将测量匹配子字符串的长度。换句话说,您需要将其中一个字符串转换为正则表达式。

另一种方法是使用巨大的案例陈述:

 (case when left(str1, 10) = left(str2, 10) then 10
       when left(str1, 9) = left(str2, 9) then 9
       ...
       when left(str1, 1) = left(str2, 1) then 1
       else 0
   end)

这假设 10 是最长的字符串。

于 2012-08-03T17:26:27.687 回答