基于SQLite的模糊重复查找

基于SQLite的模糊重复查找,sql,sqlite,fuzzy-search,sql-like,sqlite3-ruby,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'); 等等。。。 解释打字错误 我的问题是,如果没有输入错误,那么我只输出原始的公司名称。理想情况下,我只想输出原始名称,如果有一个模糊的重复发现的喜

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

我正在尝试使用SQLite和sqlite3从公司名称和表中提取模糊副本列表

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

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

SELECT name FROM tab WHERE name LIKE 'Zt_ay');
等等。。。 解释打字错误

我的问题是,如果没有输入错误,那么我只输出原始的公司名称。理想情况下,我只想输出原始名称,如果有一个模糊的重复发现的喜欢

我知道这是非常错误的,但我想大致如下:

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

提前谢谢你能给我的任何帮助

通过查看最小值和最大值,可以确定是否有多个名称:


谢谢,但我想我需要更具体一些。例如,我有这3个条目。完整业务服务Camplete Business Services ZTPay我只想输出完整业务服务和Camplete Business Services,即原始和模糊,但不输出ZTPay,因为它没有模糊。@ammansingsohi。我解释的问题是,你有模糊匹配的逻辑,并且试图返回有相似名称的情况。如果你真的没有这种逻辑,我建议你再问一个问题,包括样本数据和预期结果。@GordronLinoff我的逻辑的问题是,除了返回一个模糊和正确的记录Complete和Camplete,它还将返回一个没有模糊的正确记录。我只想看到正确的记录,如果他们有一个模糊的。我知道下一个代码是错误的,但它解释了如果countName(如'C_Complete Business Services'>1)从实名中选择Name(如'C_Complete Business Services'),则不会生成没有模糊的记录,因为每个带有模糊的记录至少会有两个类似搜索的结果。再次感谢您抽出时间。@Ammansingsohi。你所描述的就是这些having子句的作用。@GordronLinoff having似乎对我不起作用。例如,从选项卡中选择名称,其中的名称类似于“_ntetek”GROUP BY Name,countname>1;如果我有三个名字,Intertek、Ontertek和Entertek,这个HAVING子句将不会返回任何结果。我想说的是,从选项卡中选择名称,其中的名称类似于“\u ntetek”,按名称分组,计数名称类似于“\u ntetek'>1;”;我将如何实现这一点?再次感谢您抽出时间,非常感谢。
SELECT name 
FROM tab 
WHERE name LIKE 'Zt_ay%' 
group by name
having min(name) <> max(name)
SELECT name 
FROM tab 
WHERE name LIKE 'Zt_ay%' 
group by name
having count(distinct name) > 1;