2013-07-09 63 views
1

我有一個表有4個條目。如果已經滿足相同的語句,則忽略SELECT LIKE語句。

CREATE TABLE tab( 
    name Text 
        ); 

    INSERT INTO "tab" VALUES('Intertek'); 
    INSERT INTO "tab" VALUES('Pntertek'); 
    INSERT INTO "tab" VALUES('Ontertek'); 
    INSERT INTO "tab" VALUES('ZTPay'); 

Pntertek & Ontertek是正確拼寫的Intertek的模糊重複。我希望創建一個由模糊副本和正確拼寫名稱組成的列表。

正如我有4名,我有4個的搜索條件:

SELECT name FROM tab WHERE name LIKE '%ntertek' 
    AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1; 
    SELECT name FROM tab WHERE name LIKE '%ntertek' 
    AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1; 
    SELECT name FROM tab WHERE name LIKE '%ntertek' 
    AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1; 
    SELECT name FROM tab WHERE name LIKE '%TPay' 
    AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%TPay') >1; 

這產生包含相同的信息3所列出。如果第一個返回結果,我想忽略第二個和第三個相同的SELECT語句。這可能使用SQLite,我該怎麼做?

我是一個初學者,當談到sqlite和一般編程,所以任何幫助將不勝感激。

在此先感謝。

回答

0

你想查詢返回什麼?只是潛在的重複?如果是這樣,你可以通過添加一條語句來完成上述查詢。但是,您目前使用的方法只允許在名稱開頭處出現差異。我建議尋找像編輯距離算法(有時稱爲Levenshtein距離)的東西,以確定您需要在一個字段上進行更改以使其與另一個字段相同的字符數。

有下面的鏈接可能的SQLite的實現細節:http://www.sqlite.org/spellfix1.html

+0

我剛剛使出刪除重複使用Excel SELECT行代碼。 這只是我可以使用的標準的一個例子,我有一個更嚴格的搜索過程計劃,謝謝你。 –