2010-06-02 51 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服务来获得标准化的数据。