喜欢不工作不敏感的Postgresql

时间:2015-04-28 15:26:32

标签: postgresql-9.1

目的是创建公司的重复检查。并提出可疑记录以便采取进一步行动。

这是通过自联接完成的,只要有完全匹配(区分大小写),一切都很好。但是'测试'和'测试'是可疑的,应该列出。一个表示问题的小提琴:

WHERE a.name ILIKE b.name

上述代码不区分大小写。未显示测试和测试。

输出应该是(无论重复记录的数量):

1   Test  5 tesT
3   Testa 4 Testa

用5条记录修改小提琴。 http://sqlfiddle.com/#!12/2c723/1

提前感谢所有线索进行不敏感的自我加入搜索!

1 个答案:

答案 0 :(得分:0)

我想我找到了一个基于简单连接的解决方案:

create table co (id int4, name varchar(30));
insert into co values 
(1,'Test'),
(2,'test'),
(3,'Testa'),
(4,'Testa'),
(5,'testT');

SELECT min(a.id),a.name,max(b.id), b.name FROM co a
LEFT JOIN co b ON lower(a.name) = lower(b.name)
WHERE a.id<b.id
GROUP BY a.name,b.name;

输出是:

1|Test|2|test
3|Testa|4|Testa

目标是一次呈现2个重复项。合并这2并重新检查重复项。

感谢&#34; a-horse-with-name-#34;对于所有新方法。