Je tente d'incrémenter la valeur d'un champ de colonne nommé "Number" de 1, et si la valeur est actuellement Null, j'aimerais définir la valeur sur 1 car une valeur Null ne peut pas être incrémentée. J'ai découvert la fonction isNull () et je n'obtiens pas les résultats avec l'instruction suivante:
Update SomeTable set Number = IsNull(Number, Number+ 1) where
ItemCode = '000000' ;
Ma question est fondamentalement comment mettre à jour simultanément une valeur de champ par l'incrément de 1 et mettre la valeur à 1 si elle est actuellement "NULL"
Merci!
Supprimez Number
du deuxième paramètre de la fonction ISNULL
.
Quelque chose + NULL = NULL
faites donc la ISNULL
au résultat 0
quand c'est NULL
et ajoutez ensuite 1
au résultat
Update SomeTable set Number = IsNull(Number, 0) + 1 where
ItemCode = '000000' ;
ou
Update SomeTable set Number = IsNull(Number+1, 1) where
ItemCode = '000000' ;
ou deux mises à jour différentes (non recommandé)
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;
La fonction ISNULL
choisit la valeur alternative si la valeur principale est null.
UPDATE SomeTable SET Number =
CASE
WHEN Number IS NULL THEN 1 ELSE Number + 1
END
WHERE ItemCode = '000000' ;
Ou
UPDATE SomeTable SET Number = ISNULL(Number, 0) + 1
WHERE ItemCode = '000000' ;
L'instruction WHERE ItemCode = '000000';
mettra à jour tous les enregistrements avec ce code d'article: 000000
. Un simple update SomeTable set Number = 1
résoudra votre problème.