Mysql 合并返回 0 而不是实际值

Mysql Coalesce returning 0 instead of actual value

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

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

更新前:

Premia 200

之后

Premia 0,虽然它应该是 200

table中的索引:

主要 - ID

唯一 - 数据

唯一 - 用户 ID

它与引号无关,当更改它们时它的行为方式相同

您在 table 和列名两边加了单引号,因此您的查询应该不起作用。

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

coalesce() returns 0 的原因是因为你传入一个字符串,然后在数字上下文中使用它。在这种情况下,不以数字开头的字符串最终会成为 0

重复直到完全理解:"I will only use single quotes for string and date constants."