我有一个包含4个条目的表。
CREATE TABLE tab(
name Text
);
INSERT INTO "tab" VALUES('Intertek');
INSERT INTO "tab" VALUES('Pntertek');
INSERT INTO "tab" VALUES('Ontertek');
INSERT INTO "tab" VALUES('ZTPay');
Pntrtek& Ontertek是正确拼写的Intertek的模糊复制品。我希望创建一个由模糊重复和正确拼写的名称组成的列表。
由于我有4个名字,我有4个搜索条件:
SELECT name FROM tab WHERE name LIKE '%ntertek'
AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1;
SELECT name FROM tab WHERE name LIKE '%ntertek'
AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1;
SELECT name FROM tab WHERE name LIKE '%ntertek'
AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%ntertek') >1;
SELECT name FROM tab WHERE name LIKE '%TPay'
AND (SELECT COUNT(*) FROM tab WHERE name LIKE '%TPay') >1;
这会产生3个包含相同信息的列表。如果第一个SELECT语句返回结果,我想忽略第二个和第三个相同的SELECT语句。这可能是使用SQLite,我该怎么做?
对于sqlite和一般的编程,我是一个初学者,所以任何帮助都将非常感激。
提前致谢。
答案 0 :(得分:0)
您希望查询返回什么内容?只是潜在的重复?如果是这样,您可以通过包含having语句来执行上述一个查询。但是,您目前使用的方法仅允许名称开头的差异。我建议查看类似编辑距离算法(有时称为Levenshtein距离)的内容,以确定在一个字段上需要更改的字符数,以使其与另一个字段相同。
以下链接中有可能的SQLite实现的详细信息:http://www.sqlite.org/spellfix1.html