首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何统计MYSQL中有重复值的行,考虑REGEXP或通配符?

如何统计MYSQL中有重复值的行,考虑REGEXP或通配符?
EN

Stack Overflow用户
提问于 2017-08-28 04:24:21
回答 1查看 66关注 0票数 0

我使用这个查询来计算表“book”中的所有行,其中"name“列值自身重复:

代码语言:javascript
复制
SELECT name, COUNT(*) c FROM books GROUP BY name HAVING c > 1

问题是,我想把非常相似的书名看作是“重复的”。例如,名为“好书”和“好书”的书。会被认为是相同的。我或多或少知道如何使用REGEXP和通配符,但我不知道如何将其合并到我正在使用的查询中(如果可能的话)。

有什么方法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-28 05:29:58

有一个名为SOUNDEX的MYSQL字符串函数。这是一个很长的范围,但可能会做你需要的。对于发音相同的两个文本字符串,SOUNDEX应该返回相同的“代码字符串”。请参阅this link for more about SOUNDEX

所以你可以试试这个大小

SELECT SOUNDEX(name) as sname, COUNT(*) c FROM books GROUP BY sname HAVING c > 1

使用regexp时,您需要更具体地说明您想要达到的效果,因为从询问中不清楚您是否只想删除标点符号,或者有更多的内容可供您查看是否类似。

前瞻性的方法是添加另一个列,比方说UNIFORM_NAME,并有一个单独的工具/过程来填充该列,例如在向表中添加项时。如果您计划多次运行此类查询,这将非常有用。然后,您只需对这个新列使用SQL代码,如果您发明了一种新的(更好的)方法来协调名称以进行比较,则可以基于名称和新算法更新新列,解决方案的其余部分将不需要进一步更改即可工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45909013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档