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

elb*_*laf 0 dbnull increment sql-server-express query-builder

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

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

tableAdapter.IncrementLikeCount(id);
Run Code Online (Sandbox Code Playgroud)

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

我尝试的最新内容是选项b,在查询构建器中包含以下代码:

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

但是,这不起作用.查询构建器将继续在ISNULL内重写表达式,而不使用方括号和逗号,如下所示:

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

有一个干净,简单的方法吗?

DJ *_*mby 6

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

ISNULL(LikeCount, 0)
Run Code Online (Sandbox Code Playgroud)

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

所以,试试吧

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

UPDATE

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

UPDATE Documents 
SET docLikeCount = ISNULL(docLikeCount, 0) + 1
WHERE docID = @Original_docID
Run Code Online (Sandbox Code Playgroud)