2010-08-28 54 views
0

我有兩個SQL表與我想比較的數據。該表具有以下結構:比較兩個字符串arraylists或列表

id, title,url 

我想標題的列表相比較,其中如果字符串相似或相同,將通過寫記錄到文件中註明。有人建議不要在SQL中執行此操作並複製數據,並將其用於.net中作爲列表進行比較。

有關如何做到這一點的任何建議?

爲標題的典型例子:

表1 - KPTH福克斯44經由

表2 - KPTH Fox44

我嘗試使用LIKE與通配符 '%' SQL但他僅適用於在

ABC這些類型的例子,並不會工作

MSabC

+1

平等很容易測試,但「相似」可能是主觀的,很難提供令人信服的答案。也許你可以更詳細地說明你的意思是「相似」。 – kbrimington 2010-08-28 05:03:49

+0

vbNewbie,你必須更清楚「相似」。這是這個問題的核心,不是列表或SQL。 – 2010-08-28 09:07:00

+0

拼寫相似 – vbNewbie 2010-08-29 15:17:26

回答

2

在數據庫中這樣做會更容易,然後返回匹配項目的數據集。假設兩個表是相同的,你匹配的只是標題您的SQL就像:

SELECT [id], [title], [url] 
FROM [Table1] t1 
JOIN [Table2] t2 ON t1.[title] = t2.[title] 

通過在結果集中每條記錄然後進行迭代,並寫上你要到一個文件的任何領域。

如果你只想堅持SQL,你可以運行查詢,然後使用查詢工具將數據保存到文件中,如Management Studio或其他。

編輯:根據'類似'的要求,你可以在SQL中使用SOUNDEX命令來比較它們是否聽起來相似。有關SOUNDEX命令的更多信息,請參閱See MSDN

編輯2:添加更多關於您的信息添加要求:在SQL中,這種類似的要求可能很困難。您可以將標題解析爲單詞,然後將它們存儲在臨時表中,查看多少匹配,然後基於閾值分配匹配條件。它看起來像你的數據也存儲一個URL,所以你也可以使用它,並檢查基本URL,看看它們是否在進行加權標題檢查之前先匹配。我並不完全清楚除了標題以外,你要尋找什麼結果。

這真的不是一個非常簡單的任務,我認爲有人可以給你一個答案。我相信一所大學的教授正在處理這個問題。

+0

我認爲使用諸如此類的純SQL解決方案的困難在於它只會測試是否相等。它不適用於模糊相似性分析。 – kbrimington 2010-08-28 05:13:41

+0

@kbrimington我明白你的觀點。他可以嘗試SQL中的'SOUNDEX'命令,它可能符合'類似'的要求。我編輯了我的答案以反映它。 – Kelsey 2010-08-28 05:18:01

+0

SOUNDEX ...這與vb.net中的COMPARE類似。 – vbNewbie 2010-08-28 05:21:08