1

我正在使用 SQL Express 2010 查询生成器。我需要能够增加一个字段。

在我的背后代码中,我打了一个电话,例如

tableAdapter.IncrementLikeCount(id);

如果我只使用增量,like 字段可以为空,所以我想要一个。在该字段中将 null 视为零或 b。如果为 null,则设置为 1,否则递增。

我尝试的最新方法是选项 b,在查询生成器中使用以下代码:

UPDATE       [dbo].[myTable]
SET                [LikeCount] = IIF(ISNULL([LikeCount]), 1, LikeCount + 1)
WHERE        ([ID] = @Original_ID)

但是,这不起作用。查询生成器不断重写 ISNULL 内的表达式,不带方括号和逗号,如下所示:

UPDATE       [dbo].[myTable]
SET                [LikeCount] = IIF(ISNULL(LikeCount,), 1, LikeCount + 1)
WHERE        ([ID] = @Original_ID)

有没有一种干净、简单的方法来做到这一点?

4

1 回答 1

6

ISNULL 语句需要回退到默认值,例如

ISNULL(LikeCount, 0)

其中 0 是 LikeCount 变为 IF 事实上它为空的值。

所以,试试

UPDATE       [dbo].[myTable]
SET          [LikeCount] = (ISNULL(LikeCount, 0) + 1)
WHERE        ([ID] = @Original_ID)

更新

至于您在评论中发布的查询:

UPDATE Documents 
SET docLikeCount = ISNULL(docLikeCount, 0) + 1
WHERE docID = @Original_docID
于 2012-02-03T22:49:22.777 回答