将空字段视为零以进行更新查询

时间:2012-02-03 22:42:58

标签: sql-server-express increment dbnull query-builder

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

在我的后面代码中,我打了一个电话,比如

tableAdapter.IncrementLikeCount(id);

如果我只使用一个增量,那么like字段可以为null,所以我想要 一个。在该字段OR中将null视为零 湾设置为1,如果为null,则以其他方式递增。

我尝试的最新内容是选项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)

这样做有干净,简单的方法吗?

1 个答案:

答案 0 :(得分:6)

ISNULL语句需要一个默认值来回退,比如

ISNULL(LikeCount, 0)

其中0是LikeCount变为IF的值,实际上它是null。

所以,试试

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