
这个问题我以前没遇到过,也是最近用MySQL数据库的时候才发现的问题,然后查询资料,最后总结如下:
1、处理重复数据
1.1 处理重复行
SELECT your_column, COUNT(*)
FROM your_table
GROUP BY your_column
HAVING COUNT(*) > 1;1.2 删除重复行
WITH DuplicateCTE AS (
SELECT your_column, ROW_NUMBER() OVER (PARTITION BY your_column ORDER BY your_column) AS row_num
FROM your_table
)
DELETE FROM DuplicateCTE
WHERE row_num > 1;2、规范化数据格式
2.1 更改大小写:将列值转换成大写
UPDATE your_table
SET your_column = UPPER(your_column);2.2 去除空格:去除前导和尾随空格
UPDATE your_table
SET your_column = TRIM(your_column);3、规范化数据格式
3.1 转换数据类型:将字符串列转换为整数
ALTER TABLE your_table
ALTER COLUMN your_column TYPE INTEGER
USING your_column::INTEGER;3.2 处理日期格式:将字符串日期列转换为日期类型
ALTER TABLE your_table
ALTER COLUMN your_date_column TYPE DATE
USING TO_DATE(your_date_column, 'YYYY-MM-DD');4、规范化数据格式
4.1 确定缺失值:统计表中缺失数量
SELECT COUNT(*) AS missing_count
FROM your_table
WHERE your_column IS NULL;4.2 删除具有缺失值的行:删除具有缺失值的行
DELETE FROM your_table
WHERE your_column IS NULL;4.3 填充缺失值:用平均值填充缺失值
UPDATE your_table
SET your_column = (SELECT AVG(your_column) FROM your_table WHERE your_column IS NOT NULL)
WHERE your_column IS NULL;