NULL = NULL + 1不会在SQLite中更改NULL的值

时间:2016-12-03 17:10:54

标签: sql sqlite

我目前有一个包含两个表格productsinventory的数据库,我想跟踪inventory表中的数量。创建一行时,onhand列默认为NULL,我注意到如果我使用下面的查询...

UPDATE inventory SET onhand = onhand + 1 WHERE inventory.prod_id IN (SELECT products.id FROM products WHERE products.upc="012345678911");

什么都没发生。但如果我这样做:

UPDATE inventory SET onhand = 1 WHERE inventory.prod_id IN (SELECT products.id FROM products WHERE products.upc="012345678911");

然后它有效。所以我猜测它没有将NULL值增加到1.我将不得不检查这个字段是否为NULL并设置为1,否则增加+1,或者有没有办法从NULL递增?

1 个答案:

答案 0 :(得分:2)

NULL是一个特殊值,基本规则是涉及NULL的大多数计算结果为NULL。更具体地说,在SQLite中:Adding anything to null gives null

在您的情况下,您可以使用coalesce功能:

UPDATE inventory 
SET onhand = coalesce(onhand, 0) + 1 
WHERE ...