2010-06-02 98 views
0

我收到了一張表格,列表中有:作者姓名,作者姓氏和書名 多個用戶通過導入插入數據庫,我想避免重複。 所以我試圖做這樣的事情: 我有一個記錄在DB: 名字:「艾薩克」 姓:「Assimov」 標題:「我,機器人」按標題和作者搜索的書

如果用戶試圖再次添加它,它將基本上是一個非拆分文本 (不會分成作者firstname,作者姓氏和書名) 所以它基本上看起來像這樣: 「Isaac Asimov - I Robot」 或 「阿西莫夫,艾薩克 - I機器人」 或 「我的機器人由艾薩克阿西莫夫」

你看我在哪裏?

(我不能強迫用戶把所有的書分成作者名,作者姓和書名,我甚至不喜歡強制用戶的想法,因爲它不太用戶友好)

什麼是最好的方式(在SQL中)比較所有這些可能的書本數據場景與我在數據庫中的內容,而不是兩次添加同一本書。我正在考慮建議用戶的可能性:「這是你想要添加的書嗎?」 (想象一個列表,而不是這個詞,就像在計算器 - 問問題 - 相關問題

我在想

soundex 

,甚至在

like 

運營商,但到目前爲止,我沒有得到我期待的結果

+0

我不明白你爲什麼拒絕強制用戶在數據錄入階段將所有書籍分成作者姓,作者姓和書名的原因。這是您獲得可靠結果的唯一方法。 – 2010-06-02 11:04:09

+0

用戶實際上會有一個txt文本列表,我將逐行導入... – Ash 2010-06-03 09:39:46

回答

0

你可以實現顯着更好的模糊匹配算法比soundex/difference,看看Beyond SoundEx - Functions for Fuzzy Searching in MS SQL Server

你也可以看看如何實現全文目錄和使用「搜索引擎」式FREETEXT()其中:

是在WHERE子句中使用 搜索包含 基於字符的數據類型的列的謂詞爲匹配的意義並不僅僅是 確切的 搜索條件

取決於你做什麼的話措辭值 喲你也可以使用ISBN Web服務來獲得標準化的數據。