故事背景
今天四大运营商其中一个交给我们一个 Excel 表格,我们没有做任何数据清理就导入 MySQL 了,导致 a 字段出现了大量不可见字符。
检查
检查时,我们要知道不可见字符都有哪些。通常是空格、制表符、换行符、BOM头。这里我们主要清理BOM头,也就是 UTF-8 BOM 头:
SELECT
a AS 原始数据,
-- 核心处理逻辑:先删BOM头→清空白
TRIM(REPLACE(a, CHAR(0xEF, 0xBB, 0xBF), '')) AS 清理后,
LENGTH(a) AS 原始字节长度,
CHAR_LENGTH(a) AS 原始字符长度,
-- 验证清理后的长度
LENGTH(TRIM(REPLACE(a, CHAR(0xEF, 0xBB, 0xBF), ''))) AS 清理后字节长度,
CHAR_LENGTH(TRIM(REPLACE(a, CHAR(0xEF, 0xBB, 0xBF), ''))) AS 清理后字符长度
FROM yys_data
WHERE LENGTH(a) != CHAR_LENGTH(a);
清理
所以,对应清理时,也就非常简单:
UPDATE
yys_data
SET
a = TRIM(REPLACE(a, CHAR(0xEF, 0xBB, 0xBF), ''))
WHERE
LENGTH(a) != CHAR_LENGTH(a);