it-swarm.com.de

IsNull () SQL-Funktion

Ich versuche, den Wert eines Spaltenfelds mit dem Namen "Number" um 1 zu erhöhen. Wenn der Wert derzeit Null ist, möchte ich den Wert auf 1 setzen, da ein Nullwert nicht erhöht werden kann. Ich habe die isNull () - Funktion entdeckt und erhalte die Ergebnisse nicht mit der folgenden Anweisung:

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

Meine Frage ist im Grunde, wie man einen Feldwert gleichzeitig um das Inkrement von 1 aktualisiert und den Wert auf 1 setzt, wenn er momentan "NULL" ist.

Vielen Dank!

2
D0uble0

Entfernen Sie Number aus dem zweiten Parameter der ISNULL-Funktion. 

Alles + NULL = NULL

nehmen Sie daher die Variable ISNULL zum Ergebnis 0 vor, wenn es NULL ist, und fügen Sie dem Ergebnis 1 hinzu

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

oder 

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

oder zwei verschiedene Updates (nicht empfohlen)

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 function wählt den alternativen Wert, wenn der Hauptwert Null ist.

UPDATE SomeTable SET Number =
CASE
    WHEN Number IS NULL THEN 1 ELSE Number + 1
END 
WHERE ItemCode = '000000' ;

Oder

UPDATE SomeTable SET Number = ISNULL(Number, 0) + 1
WHERE ItemCode = '000000' ;
0
Joe Taras

Die Anweisung WHERE ItemCode = '000000'; aktualisiert alle Datensätze mit diesem Artikelcode: 000000. Ein einfacher update SomeTable set Number = 1 löst Ihr Problem.

0