2012-02-03 8 views
0

私はSQL Express 2010クエリービルダーを使用しています。私はフィールドを増やすことができる必要があります。私のコードの後ろに更新クエリのnullフィールドをゼロとして扱う

、私はそのような

tableAdapter.IncrementLikeCount(id); 

として呼び出し、私はちょうどインクリメントを使用する場合は、のようなフィールドがnullにすることができますを作るので、私は どちらかにしたいです。そのフィールドでヌルをゼロとして処理するか、または b。 nullの場合は1に設定し、それ以外の場合は増分します。

、私が試した最新のものは、クエリビルダに次のコードを持つオプションBです:

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

しかし、これは動作しません。これを行うのきれいな、簡単な方法はあり

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

:クエリビルダは、次のように、角括弧なしでコンマでISNULL内部表現を書き換える続けますか?

答えて

5

ISNULL文は0が実際にそれがnullの場合LikeCountになる値である

ISNULL(LikeCount, 0) 

のように、背中にフォールするためのデフォルトを必要とします。

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

私が試した:

だから、あなたはあなたのコメントに掲示クエリにしたよう

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

UPDATE

を試してみてください UPDATEドキュメントを SET docLikeCount = IIF(ISNULL (docLikeCount、0)、0、docLikeCount +1)WHERE(docID = @Original_docID) .... (docID = @Original_docID) ...まだ構文エラーが発生しています。 – elbillaf

関連する問題