1

SQL Express 2010 クエリ ビルダーを使用しています。フィールドをインクリメントできる必要があります。

私のビハインドコードでは、次のような呼び出しを行います

tableAdapter.IncrementLikeCount(id);

インクリメントのみを使用すると、like フィールドが null になる可能性があるため、次のいずれかを行います。そのフィールドで null をゼロとして扱う、または b. null の場合は 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)

これを行うクリーンで簡単な方法はありますか?

4

1 に答える 1

6

ISNULL ステートメントには、フォールバックするデフォルトが必要です。

ISNULL(LikeCount, 0)

ここで、0 は LikeCount が IF になる値であり、実際には null です。

だから、試してみてください

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
于 2012-02-03T22:49:22.777 に答える