web-dev-qa-db-fra.com

Fonction IsNull () sql

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!

2
D0uble0

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;
10
Pரதீப்

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

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.

0
Jaider Xavier Jr.