SQL计算RowSum标记村镇表重复项时不区分大小写和重音的实现问题
解决方案
你之前的操作未生效,是因为没有在分组统计、关联匹配两个核心步骤同时应用不区分大小写和重音的排序规则,统一指定规则即可实现需求,正确代码如下:
UPDATE Mapping.dbo.OsmGlobal SET notUnique = 1 FROM Mapping.dbo.OsmGlobal osm JOIN ( SELECT [name] COLLATE Latin1_General_CI_AI AS name_ci_ai, COUNT(*) AS RowSum FROM Mapping.dbo.OsmGlobal GROUP BY [name] COLLATE Latin1_General_CI_AI HAVING COUNT(*) > 1 ) cnt ON osm.[name] COLLATE Latin1_General_CI_AI = cnt.name_ci_ai GO
规则说明
Latin1_General_CI_AI排序规则的两个核心属性正好匹配你的需求:
CI:不区分大小写AI:不区分重音、变音符号(ñ、ä这类带特殊符号的字符会被识别为对应的普通字母)
执行上述代码后,Pasadena和Pasadeña会被归为同一重复分组,三条对应记录的notUnique字段都会被标记为1。
内容的提问来源于stack exchange,提问作者kaspar
相关产品推荐
相关产品推荐

