Обрабатывать нулевое поле как ноль для запроса на обновление

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

В моем коде позади я звоню, например:

tableAdapter.IncrementLikeCount(id);

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

Решение

Для оператора 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
Другие вопросы по тегам