2012-02-03 71 views
0

我正在使用SQL Express 2010查詢生成器。我需要能夠增加一個字段。將空字段作爲零更新查詢處理

在我後面的代碼,我打個電話,如

tableAdapter.IncrementLikeCount(id); 

如果我只是用一個增量,等等領域可以爲空,所以我想要麼 一個。在該字段中將零視爲零或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) 

是否有這樣做的一個清潔,簡單的方法?

回答

5

的ISNULL報表需要一個默認回落到,像

ISNULL(LikeCount, 0) 

,其中0是值LikeCount成爲IF實際上它是空的。

所以,儘量

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

UPDATE

正如您在您的評論貼查詢:我想

UPDATE Documents 
SET docLikeCount = ISNULL(docLikeCount, 0) + 1 
WHERE docID = @Original_docID 
+0

: 更新文檔 SET docLikeCount = IIF(ISNULL (docLikeCount,0),0,docLikeCount + 1)WHERE(docID = @Original_docID) .... an d也作爲...更新文檔 SET docLikeCount = ISNULL(docLikeCount,1,docLikeCount + 1) WHERE(docID = @Original_docID) ...仍然出現語法錯誤。 – elbillaf 2012-02-03 22:52:35