Mysql Coalesce返回0而不是实际值

时间:2015-10-11 20:03:27

标签: mysql coalesce

INSERT INTO 'rozliczenia' ('userid', 'data', 'stawka') VALUES ('1', '2015-11-01', NULL) ON DUPLICATE KEY UPDATE stawka = COALESCE(VALUES('stawka'), 'stawka');

应检查value是否为NULL。如果是,那么不要更新premia列(我在表中没有任何空值),但它会将其更新为0.为什么?昨天一切正常。

更新前:

Premia 200

Premia 0,尽管它应该是200

表中的索引:

主要 - 身份

唯一 - 数据

唯一 - 用户标识

这不是关于引用的,当它们改变它们的行为方式时

1 个答案:

答案 0 :(得分:0)

您对表名和列名有单引号,因此您的查询不起作用。

INSERT INTO rozliczenia(userid, data, stawka)
    VALUES ('1', '2015-11-01', NULL)
    ON DUPLICATE KEY UPDATE stawka = COALESCE(VALUES(stawka), stawka);

coalesce()返回0的原因是因为您传入一个字符串然后在数字上下文中使用它。在这样的上下文中,不以数字开头的字符串最终为0

重复直到你彻底理解:“我只会使用单引号作为字符串和日期常量。”