2012-08-03 44 views
0

我有兩個字符串。我想知道兩個字符串中有多少字符相似。查找SYBASE中的字符串之間的相似性SQL

E.x:讓我們說'xyzabc','xyzadh'。我想知道是否有一個函數可以給出索引的相似性打破。在這種情況下,它會是4,因爲'xyza'字符串是相同的。如果字符串是'xyzabc','xymabc',那麼結果應該是2.

我想用它作爲select func('xyzabc', 'xyzwer');以獲得所需的答案。 Kinldy讓我知道是否有SQL中存在的函數。

非常感謝!

+0

您使用的是哪個版本的Sybase?你的問題的答案是你需要正則表達式。 。 。但它們並不是所有版本的產品。 – 2012-08-03 14:53:23

+0

嗨,戈登,我不確定版本。我會檢查並通知你。同時,如果我們假設我的版本支持正則表達式,那麼檢查相似性的方法是什麼? – Goje87 2012-08-03 16:56:22

回答

0

執行此操作的一種方法是使用正則表達式。這是主意。你會使用regexp_substr()。在你的例子中,正則表達式是'xyzwer | xyzwe | xyzw | xyz | xy | x'。然後您會測量匹配子字符串的長度。換句話說,您需要將其中一個字符串轉換爲正則表達式。

另一種方法是使用一個巨大的case語句:

(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是最長的字符串。

相關問題