like 不区分大小写的 Postgresql

like does not work case insensitive Postgresql

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

这是通过自连接完成的,只要存在完全匹配(区分大小写),一切都很好。但是 'Test' 和 'test' 是可疑的,应该列出。一个fiddle来说明问题:

WHERE a.name ILIKE b.name

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

输出应该是(不管重复记录的数量):

1   Test  5 tesT
3   Testa 4 Testa

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

预先感谢您提供所有线索以进行不敏感的自连接搜索!

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

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 并重新检查重复项。

感谢 "a-horse-with-no-name" 所有新方法。