十进制字段的Mysql更新语句为NULL或空

时间:2010-09-13 12:09:51

标签: mysql

无法弄清楚,如何将十进制字段更新为null或空白。

尝试过:

UPDATE ads SET price=NULL WHERE price=0

UPDATE ads SET price="" WHERE price=0

不工作。

谢谢;)

(更新) 片刻。

3 个答案:

答案 0 :(得分:5)

UPDATE ads SET price=NULL WHERE price=0

这是将字段设置为NULL的正确方法。但是,如果列不允许NULL,它将无法工作。

如果您有该表的CREATE语句可用,请检查价格列是否显示NOT NULL。

如果你没有CREATE语句,你可以在oracle或mysql上运行'DESC ads',看看是否允许NULL。

答案 1 :(得分:1)

UPDATE ads SET price=NULL WHERE price=0

只有在您允许列价的空值时,上述语句才有效。

UPDATE ads SET price="" WHERE price=0

上述语句不起作用,因为为十进制列设置为空等效于将其设置为0值。

由于该列已包含0值,因此可能会给出0行更新消息。

答案 2 :(得分:0)

我完全赞同dsclementsen的答案,这就是我支持他的原因,但即使你的价格字段在你的表定义中可能为NULL,你也可能有限制和触发器来阻止这种更新。

编辑:

UPDATE ads SET price=NULL WHERE price=0

无效,因为price不可为空。

UPDATE ads SET price="" WHERE price=0

无效,因为:

  • price不是文字
  • 如果要设置文字值,则需要使用'