MySQL如何移除列中的空行?已尝试两种方法但无效
解决空行无法删除的问题
你遇到的情况是,执行UPDATE mytable SET format = REPLACE(format, 'company', '');后,字段看起来是空的,但DELETE FROM mytable WHERE format='' OR format IS NULL语句无效,核心原因是这些字段并非真的空字符串或NULL,而是包含空白字符(比如空格、换行符、制表符等肉眼难以分辨的字符)。
以下是几种可行的解决方法:
先排查字段实际内容:
使用HEX()函数查看字段的十六进制值,确认空白字符类型:SELECT format, HEX(format) FROM mytable WHERE format IS NOT NULL AND format != '';常见空白字符的十六进制值:空格为
20,换行符为0A,制表符为09。方法一:先清理空白再删除
先去除字段首尾的所有空白字符,再删除空值行:-- 去除字段首尾的空白字符(含空格、换行、制表符等) UPDATE mytable SET format = TRIM(format); -- 删除空字符串或NULL的行 DELETE FROM mytable WHERE format = '' OR format IS NULL;方法二:直接在DELETE语句中处理空白
无需提前更新,直接在WHERE条件里用TRIM()判断:DELETE FROM mytable WHERE TRIM(format) = '' OR format IS NULL;方法三:处理特殊空白字符
如果字段里包含换行、制表符等特殊空白,可先替换再清理:-- 替换换行符、制表符为空,再去除首尾空格 UPDATE mytable SET format = TRIM(REPLACE(REPLACE(format, '\n', ''), '\t', '')); DELETE FROM mytable WHERE format = '' OR format IS NULL;
内容的提问来源于stack exchange,提问作者user1937852
相关产品推荐
相关产品推荐

