在mysql中,我需要用空值更新Varchar
列。我可以使用这样的查询:
update books set Volume='NULL' WHERE BookId=5457
但它只是用NULL
作为字符串更新列如果我在 mysql 函数 COALESCE 上使用此列数据,它将NULL
作为字符串返回,而不是真正的NULL
。我的主要问题在于这句话:
Select Title,COALESCE(Volume,PackId) From books where BookId=5457
我需要COALESCE
来获取第一个not null
,如果我是否使用 qoutes 运行更新,它不会向mysql
行添加实际NULL
,并且COALESCE
无法正常工作并返回卷而不是 PackId
是否有特殊的语法来执行此操作?
从 Null 中删除单引号:
update books set Volume=NULL WHERE BookId=5457
我找到了答案。Mysql 中的 NULL
和 empty
之间存在差异。 NULL
表示未设置,空表示 0;
对于我创建表或更改表以添加具有Varchar
类型的新字段时的问题,我应该允许 Mysql 可以为字段设置Null
值,如下所示:
ALTER TABLE `books` ADD `Volume` VARCHAR(25) NULL
或禁止Mysql,例如:
ALTER TABLE `books` ADD `Volume` VARCHAR(25) NOT NULL
正在运行
update books set Volume=NULL WHERE BookId=5457
将导致设置实际NULL
,COALESCE
函数将其理解为NULL
。
谢谢大家的帮助。