用SQLite进行模糊重复查找

时间:2013-07-05 11:23:05

标签: sql sqlite fuzzy-search sql-like sqlite3-ruby

这是我的第一篇文章,我是一个新手。

我正在尝试使用SQLite和sqlite3从公司名称和表格中提取模糊重复项列表。

例如,对于像'ZtPay'这样的公司,我目前正在使用:

SELECT name FROM tab WHERE name LIKE 'Z_Pay');

SELECT name FROM tab WHERE name LIKE 'Zt_ay');

...等 为了解释错别字。

我的问题是,如果没有拼写错误,那么我只输出原始公司名称。理想情况下,如果LIKE找到模糊副本,我只想输出原始名称。

我知道这是非常错误的,但我想要的是:

SELECT name FROM tab WHERE name LIKE 'Z_Pay' IF ATLEAST 2 name LIKE 'Z_Pay' 

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以通过查看min()max()确定是否有多个名称:

SELECT name 
FROM tab 
WHERE name LIKE 'Zt_ay%' 
group by name
having min(name) <> max(name)

或者,您可以使用count(distinct)

SELECT name 
FROM tab 
WHERE name LIKE 'Zt_ay%' 
group by name
having count(distinct name) > 1;