我有两个字符串。我想知道两个字符串中有多少个字符是相似的。
E.x:让我们说'xyzabc','xyzadh'。我想知道是否有一个函数可以给出相似性破坏的索引。在这种情况下,它将是4,因为直到'xyza'字符串是相同的。如果字符串是'xyzabc','xymabc',则结果应为2.
我想将其用作select func('xyzabc', 'xyzwer');
来获得所需的答案。如果SQL中存在函数,Kinldy会告诉我。
提前多多感谢!!!
答案 0 :(得分: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是最长的字符串。