SELECT COUNT(*), name, number
FROM tbl
GROUP BY name, number
HAVING COUNT(*) > 1
有时无法找到小写和大写之间的重复项。
例如:sunny
并且Sunny
不显示为重复项。
因此,如何在PostgreSQL中找到两列的所有可能重复项。
lower()
](http://www.postgresql.org/docs/current/interactive/functions-string.html#FUNCTIONS-STRING-SQL)/
upper()
使用其中之一将字符折叠为小写或大写。特殊字符不受影响:
SELECT count(*), lower(name), number
FROM tbl
GROUP BY lower(name), number
HAVING count(*) > 1;
unaccent()
如果您实际上想忽略变音符号(如您的注释所暗示的那样),请安装附加模块unaccent
,该模块提供了一个文本搜索字典,该字典可以删除重音符号以及通用功能unaccent()
:
CREATE EXTENSION unaccent;
使其非常简单:
SELECT lower(unaccent('B眉脽ercaf茅')) AS norm
结果:
busercafe
这不会去除非字母。添加regexp_replace()
像@Craig提到的那样:
SELECT lower(unaccent(regexp_replace('$s^o&f!t B眉脽ercaf茅', '\W', '', 'g') ))
AS norm
结果:
softbusercafe
它有时无法在小写和大写之间找到重复项。 例如:和不显示为重复项。 那么如何在PostgreSQL中为两列找到所有可能的重复项。
问题内容: 我有一个人员,我想查找重复的条目,以约束除以外的所有字段。因此,请使用-method(并因此使用),因为它们已考虑在内。 修改和方法以忽略该字段不是一种选择,因为代码的其他部分依赖于此。 如果我想忽略该字段,Java中最有效的方法是对重复项进行分类? 问题答案: 构建一个以实现您的自然键排序,然后使用基于二进制搜索的重复数据删除。即可为您提供这种能力。 请注意,必须满足通常的反对称性,
问题内容: 忽略大小写,比较Python中字符串的最简单方法是什么? 当然可以做到(str1.lower()<= str2.lower())等,但这会创建两个附加的临时字符串(明显的alloc / gc开销)。 我想我正在寻找一个等效于C的stricmp()。 [请求更多上下文,所以我将用一个简单的示例进行演示:] 假设您要排序一个完整的字符串列表。您只需执行List.sort()。这是O(n *
问题内容: 我有一个列表,其中包含代表动物名称的字符串。我需要对列表进行排序。如果使用,它将首先使用大写字符串然后使用小写形式提供列表输出。 但是我需要下面的输出。 输入: 输出: 问题答案: 该方法和功能迈出了关键的参数: 为每个值调用名为in的函数,并在排序时使用返回值,而不会影响实际值: 要在之前进行排序,您必须在键中包含更多信息,以便以给定的顺序对相等的值进行排序: 为和为生成更复杂的密钥
我想既然查询的语法是: 查询的语法是 忽略案例集合查询的语法为: 但这似乎不起作用(它仍然区分大小写)。 想法? 编辑: 它也不是。
问题内容: 是否可以确定String是否包含字符串模式?我想知道当字符不区分大小写时是否有可能。如果是这样,怎么办? 问题答案: 您可以使用 检查CharSequence是否包含搜索CharSequence(不区分大小写),处理为null。不区分大小写由String.equalsIgnoreCase(String)定义。 空的CharSequence将返回false。 这将比regex更好,因为