2013-03-11 42 views
0

我在我的SQLite數據庫中有一個表,其中一列只是一個自由文本。 此外,我定義了一個自定義函數,用於計算兩個給定字符串的Levenshtein距離。基本上只是一個返回整數值的比較函數(兩個字符串之間的距離)。SQLite - 使用比較函數從表中選擇行

我的目標是檢索該表中的所有行,它們共享的距離低於它們之間的給定值D.

這可能使用查詢嗎?我認爲GROUP BY會是答案,但我沒有得到任何我可以分享的半正式結果。

在此先感謝您提供的任何幫助。

回答

1

你必須加入該表本身:

SELECT * 
FROM MyTable T1 JOIN 
    MyTable T2 ON T1.ID < T2.ID AND 
        LDist(T1.TextColumn, T2.TextColumn) < 42 

(該ID比較防止了同一對返回兩個結果記錄)。

+0

感謝CL。但該查詢假定我將TextColumn中的每個值與固定字符串「搜索文本」進行比較。我需要的是使用Comparer函數來比較TextColumn值,以獲得共享距離的值 2013-03-11 16:28:00

+0

這絕對是一個進步:)我仍然需要篩選結果,因爲我多次獲取相同的行(就像第1行和第2行相反),但至少我在輸出中找到了想要的行。 – 2013-03-11 23:32:04