如果列字段为空,则mysql将列字段视为空

时间:2017-02-01 07:29:24

标签: java mysql

嗨,这是我要查询的表格:

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并将空格替换为空格?

2 个答案:

答案 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

试试这个..:)