gpt4 book ai didi

mysql - 根据重音查找重复字段

转载 作者:行者123 更新时间:2023-11-29 03:11:23 24 4
gpt4 key购买 nike

好吧,这让我很烦。我从一个客户那里得到了一个电话簿数据库,其中一些结果包含带重音的名字,

有些人主要指城市领域或类别。这让我的查询结果看起来很荒谬。

数据库字符集:UTF-8

例如:

公司名称 |城市 |等等……

演示公司 |中央大街 18 号 |随便

演示公司 |中央大街 18 号 |随便

数据库有大约 360k 条记录....所以手动检查不是一种选择。任何人都知道如何找到重音/非重音值?类似于重复列检查...

编辑:当我查询表时,我得到了两者的结果,这不是问题所在。问题是,当我显示结果时,有些显示带有重音,有些则没有。

编辑:

CREATE TABLE `enc` (
`company` varchar(255) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
`postcode` varchar(255) DEFAULT NULL,
`city` varchar(255) DEFAULT NULL,
`Telefon1` varchar(255) DEFAULT NULL,
`Telefon2` varchar(255) DEFAULT NULL,
`Telefon3` varchar(255) DEFAULT NULL,
`Telefon4` varchar(255) DEFAULT NULL,
`Telefon5` varchar(255) DEFAULT NULL,
`Branche1` varchar(255) DEFAULT NULL,
`Branche2` varchar(255) DEFAULT NULL,
`Branche3` varchar(255) DEFAULT NULL,
`Branche4` varchar(255) DEFAULT NULL,
`Branche5` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

最佳答案

你可以从这样的东西开始,它会显示是否有完全重复的行(以及它们的数量):

SELECT 
CompanyName, City, etc...
, COUNT(*) AS DuplicateCount
FROM
TableToCheck
GROUP BY
CompanyName, City, etc... --- all columns except the Primary Key
HAVING
COUNT(*) > 1

如果您只想查找重复的地址,您可以这样做:

SELECT 
Address
, COUNT(*) AS DuplicateCount
FROM
TableToCheck
GROUP BY
Address
HAVING
COUNT(*) > 1

再次阅读您的问题,我想我误解了您的问题。如果您不想查找重复项(因为没有),但您想要查找带重音的单词(并可能用无重音替换它们):

您现在拥有的表格可能正在使用不区分大小写的排序规则(如 utf_general_ciutf_unicode_ci),因此您可以将表格复制到具有相同字符集的新表格中但是区分大小写的排序规则,例如 utf_bin

然后您可以创建一个重音字符列表,然后编写一个查询以在您的新表的字段中检查该列表(这将非常慢):

SELECT nt.*
FROM NewTable AS nt
JOIN AccentedList AS al
WHERE nt.field LIKE CONCAT('%', al.AccentedChar, '%')
GROUP BY nt.PK

或运行查询以 REPLACE() 这些字符,例如 'ß''ss'

关于mysql - 根据重音查找重复字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779071/

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