「Number」という名前の列フィールドの値を1ずつインクリメントしようとしていますが、値が現在Nullの場合、Null値をインクリメントできないため、値を1に設定したいと思います。 isNull()関数を発見しましたが、次のステートメントを使用しても結果が得られません。
Update SomeTable set Number = IsNull(Number, Number+ 1) where
ItemCode = '000000' ;
私の質問は基本的に、フィールド値を1ずつ同時に更新し、現在「NULL」の場合は値を1に設定する方法です。
ありがとう!
Number
関数の2番目のパラメーターからISNULL
を削除します。
何でも+ NULL = NULL
したがって、ISNULL
の場合はNULL
を結果0
にし、結果に1
を追加します。
Update SomeTable set Number = IsNull(Number, 0) + 1 where
ItemCode = '000000' ;
または
Update SomeTable set Number = IsNull(Number+1, 1) where
ItemCode = '000000' ;
または2つの異なる更新(非推奨)
Update SomeTable set Number = Number + 1 where
ItemCode = '000000' AND Number IS NOT NULL;
Update SomeTable set Number = 1 where
ItemCode = '000000' AND Number IS NULL;
ISNULL
関数は、メイン値がnullの場合に代替値を選択します。
UPDATE SomeTable SET Number =
CASE
WHEN Number IS NULL THEN 1 ELSE Number + 1
END
WHERE ItemCode = '000000' ;
または
UPDATE SomeTable SET Number = ISNULL(Number, 0) + 1
WHERE ItemCode = '000000' ;
ステートメントWHERE ItemCode = '000000';
は、次のアイテムコードですべてのレコードを更新します:000000
。シンプルな update SomeTable set Number = 1
あなたの問題を解決します。