SQL数据清洗:如何合并统计本应为同一项的两个不同条目?
解决文本含末尾空格导致的分组统计问题
你用SUBSTRING无效的原因大概率是:部分条目可能不止末尾有一个空格,或者存在其他格式问题(比如中间夹杂空格),只截取前3位没法覆盖所有情况。给你几个实用的解决办法:
1. 直接清洗后分组统计(推荐)
用TRIM()函数去掉字段首尾的所有空格,再分组统计每个条目的实例数,这样能把'4wd'、'4wd '这类带末尾空格的条目合并成同一个分组:
SELECT TRIM(drive_wheels) AS cleaned_drive_wheels, COUNT(*) AS instance_count FROM your_table_name GROUP BY TRIM(drive_wheels);
如果确定只有末尾有空格,也可以用RTRIM()只去掉末尾空格,效果一致:
SELECT RTRIM(drive_wheels) AS cleaned_drive_wheels, COUNT(*) AS instance_count FROM your_table_name GROUP BY RTRIM(drive_wheels);
2. 单独统计'4wd'相关条目
如果只想统计所有实际为'4wd'(包括带空格的)的实例数,直接用TRIM()后判断即可:
SELECT COUNT(*) AS four_wd_count FROM your_table_name WHERE TRIM(drive_wheels) = '4wd';
小提示
TRIM/RTRIM在MySQL、SQL Server、PostgreSQL等主流数据库里都能直接使用,适合初学者快速解决这类格式问题。
内容的提问来源于stack exchange,提问作者Luís Morais
相关产品推荐
相关产品推荐

