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" 所有新方法。
目的是创建公司的重复检查。并出示可疑记录以采取进一步行动。
这是通过自连接完成的,只要存在完全匹配(区分大小写),一切都很好。但是 '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" 所有新方法。