我正在尝试使用以下更新语句更新PostgreSQL和MySQL上的supplier表:

UPDATE SUPPLIERS SET CURDEBT = CURDEBT + 10 WHERE ID = 5

只要CURDEBT列不等于空,这就可以正常工作,如果为空,则不会更新记录。有人能解决这个问题吗?
谢谢

最佳答案

在SQL中,NULL与0不同。对空值的任何操作仍会产生空结果。空值+10仍然为空。
如果您希望空值在此查询中自动变为“0”,请尝试以下操作(PostgreSQL):

UPDATE SUPPLIERS SET CURDEBT = coalesce(CURDEBT, 0) + 10 WHERE ID = 5

或MySQL:
UPDATE SUPPLIERS SET CURDEBT = ifnull(CURDEBT, 0) + 10 WHERE ID = 5

关于mysql - 奇怪的SQL更新行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5370926/

10-10 11:48