我在表中添加了ENUM列,并且我所有已经存在的行都具有NULL值。唯一的问题是我没有如何选择和升级它们到我需要的东西。
我尝试了类似UPGRADE users Status='User' where Status=NULL
之类的东西和其他类似“ ... where Status=''
”之类的选择,但是这些都不给我带来解决方案。
我想将每个NULL值更改为'User'。
答案 0 :(得分:4)
NULL是一个特殊值,在几乎所有常规比较中,如果涉及NULL,则结果为NULL。这不是TRUE,实际上表示FALSE。比较NULL时,您需要的是x IS NULL
或x IS NOT NULL
。
也就是说,我通常建议避免使用MySQL的ENUM数据类型。添加新值涉及ALTER TABLE,这涉及重建表。它们也不能与许多用于连接数据库的库“玩得很开心”。并且总体上具有奇怪的语义。通常,使用使用标准数据类型的查找表会更好。
此外,您要查找的语句类型为UPDATE
,没有“ UPGRADE”。
答案 1 :(得分:3)
尝试:
UPDATE users
SET Status = 'User'
WHERE Status IS NULL;
这是因为NULL是一个特殊值。从概念上讲,NULL表示“缺少未知值”,并且与其他值的处理方式有所不同。要测试NULL,请使用IS NULL
和IS NOT NULL
运算符。