Обрабатывать нулевое поле как ноль для запроса на обновление - PullRequest
0 голосов
/ 04 февраля 2012

Я использую конструктор запросов SQL Express 2010.Мне нужно иметь возможность увеличивать поле.

В моем исходном коде я выполняю вызов, такой как

tableAdapter.IncrementLikeCount(id);

Если я просто использую приращение, поле like может быть пустым,так что я хочу либо.трактуйте ноль как ноль в этом поле ИЛИ b.установите в 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)

Существует ли простой, простой способ сделать это?

1 Ответ

6 голосов
/ 04 февраля 2012

Оператору 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
...