gpt4 book ai didi

mysql - 如何计算 MYSQL 中具有重复值的行数,同时考虑 REGEXP 或通配符?

转载 作者:行者123 更新时间:2023-11-29 10:38:51 25 4
gpt4 key购买 nike

我正在使用此查询来计算表“books”中的所有行,其中“name”列值重复:

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

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

有什么办法可以实现这一点吗?

最佳答案

MYSQL 有一个名为 SOUNDEX 的字符串函数。这是一个很长的距离,但可能只是做你需要的。 SOUNDEX 应该为听起来相同的两个文本字符串返回相同的“代码字符串”。请参阅this link for more about SOUNDEX

所以你可以试试这个尺寸

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

使用正则表达式,您需要更具体地说明您想要实现的效果,因为从询问中不清楚您是否只想删除标点符号,或者还有更多内容供您查看是否相似。

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

关于mysql - 如何计算 MYSQL 中具有重复值的行数,同时考虑 REGEXP 或通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45909013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com