嗨,这是我要查询的表格:
mytable
id, name
1,name1
2,name2
3,' ' //this is a white space
4,null
但是当我使用此查询将空白列设置为null时:
update mytable set `name`= CASE `name` WHEN '' THEN NULL ELSE `name` END;
它甚至更新了包含空格的列字段。 结果是:
1,name1
2,name2
3,null
4,null
为什么mysql也将空格视为''空白? 是否有任何选项只能将表中的空格替换为null并将空格替换为空格?
答案 0 :(得分:3)
因为MySQL将''
,' '
甚至' '
视为相同。
尝试查询:
select '' = ' '
它将返回1表示真实。因此,MySQL将任何长度的所有空白字符串视为等于。
如果要更新长度为0的空字符串的行,请使用Length
函数:
UPDATE mytable
SET
`name` = NULL
WHERE
`name` = '' AND LENGTH(`name`) = 0;
答案 1 :(得分:1)
nullif(trim(name),'')为NULL
https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_nullif
试试这个..:)