在 SQL 中,如何递增一个数字值,但如果它为 null,则将其设置为 1?

In SQL, how to increment a value that is a number, but set a value to 1 if it's null?

标题说明了。如果它是一个数字,我想更新一个列值以将 +1 添加到自身,但如果它当前为 null,则将其更改为 1。这是我到目前为止尝试过的方法: "UPDATE table SET colname=ISNULL(colname, 0)+1 WHERE othercolname IN('$val', '$val2')"; 我是 SQL 的新手,看过很多东西,但无法正常工作。

为此你想使用 CASE/WHEN/ELSE

UPDATE table SET colname = (CASE colname WHEN  NULL THEN 1 ELSE colname + 1 END) WHERE othercolname IN('$val', '$val2')

要添加更多详细信息,您的查询将 colname 设置为 ISNULL(colname, 0)+1 的 return 值。 ISNULL 函数只有一个参数,如果该参数为 NULL,则 returns 为 1,如果不为 NULL,则为 0。然后你添加 1。你会得到一个 'incorrect parameter count' 错误,如果你修复它,你仍然只会得到 2 的 NULL 值和 1 的一切。因此,与流行的观点相反,查询看起来不太好。