web-dev-qa-db-ja.com

IsNull()SQL関数

「Number」という名前の列フィールドの値を1ずつインクリメントしようとしていますが、値が現在Nullの場合、Null値をインクリメントできないため、値を1に設定したいと思います。 isNull()関数を発見しましたが、次のステートメントを使用しても結果が得られません。

Update SomeTable set Number = IsNull(Number, Number+ 1) where
ItemCode = '000000' ;

私の質問は基本的に、フィールド値を1ずつ同時に更新し、現在「NULL」の場合は値を1に設定する方法です。

ありがとう!

3
D0uble0

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;
10

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' ;
0
Joe Taras

ステートメントWHERE ItemCode = '000000';は、次のアイテムコードですべてのレコードを更新します:000000。シンプルな update SomeTable set Number = 1あなたの問題を解決します。

0