sql – 在两列中查找可能的重复项,忽略大小写和特殊字符
发布时间:2020-12-12 06:50:06 所属栏目:MsSql教程 来源:网络整理
导读:询问 SELECT COUNT(*),name,numberFROM tblGROUP BY name,numberHAVING COUNT(*) 1 它有时无法在小写和大写之间找到重复. 例如:晴天和阳光不会显示为重复. 那么如何在PostgreSQL中为两列找到所有可能的重复项. 解决方法 lower() / upper() 使用其中一个将字
询问
SELECT COUNT(*),name,number FROM tbl GROUP BY name,number HAVING COUNT(*) > 1 它有时无法在小写和大写之间找到重复. 解决方法lower() /
upper()
使用其中一个将字符折叠为大写或小写.特殊字符不受影响: SELECT count(*),lower(name),number FROM tbl GROUP BY lower(name),number HAVING count(*) > 1;
如果你真的想忽略变音符号,就像你的评论所暗示的那样,安装附加模块 CREATE EXTENSION unaccent; 使它非常简单: SELECT lower(unaccent('Bü?ercafé')) AS norm 结果: busercafe 这不会剥离非字母.添加像@Craig那样的regexp_replace(): SELECT lower(unaccent(regexp_replace('$s^o&f!t Bü?ercafé','W','','g') )) AS norm 结果: softbusercafe 您甚至可以在其上构建功能索引: > Does PostgreSQL support “accent insensitive” collations? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |