这是我的问题:
UPDATE qanda SET amount = amount + 1000 WHERE id = ? AND type = 0;
默认情况下, amount
列为null
,当我执行上述查询时,没有任何反应。我该如何解决这个问题?我想我需要施法。
答案 0 :(得分:0)
UPDATE qanda SET amount = nvl(amount,0)+ 1000 WHERE id =? AND type = 0;
答案 1 :(得分:0)
你可以试试IFNULL()函数。它会返回
UPDATE qanda SET amount = ifnull(amount,0) + 1000 WHERE id = ? AND type = 0;
答案 2 :(得分:0)
ANSI标准函数为COALESCE()
:
UPDATE qanda
SET amount = COALESCE(amount, 0) + 100
WHERE id = ? AND type = 0;
有些数据库有其他神秘的功能可以做同样的事情。 。 。例如nz()
,ifnull()
,nvl()
。尽可能坚持标准。
我应该注意到你可以解决这个问题"用另一种方式。定义列时,请为其指定默认值:
create table quanda (
. . .
amount int not null default 0
. . .
);
这将确保NULL
永远不在列中。