wake-up-neo.com

SQL-Abfrage zur Aktualisierung der Datenbank, wenn der Wert nicht Null ist?

Ich habe eine Tabelle mit ungefähr 17 Feldern. Ich muss regelmäßig Updates in dieser Tabelle durchführen. Aber das Problem ist jedes Mal, wenn ich nur ein paar Felder aktualisiere . Was ist der beste Weg, um in einem solchen Szenario eine Abfrage für die Aktualisierung zu schreiben? Ich suche nach einer Option, bei der der -Wert nur dann aktualisiert wird, wenn er nicht null ist.

Zum Beispiel habe ich vier Felder in der Datenbank Say A, B, C, D . Der Benutzer aktualisiert den Wert von say D. Alle anderen Werte bleiben gleich. Ich möchte also eine Aktualisierungsabfrage, die nur den Wert von D aktualisiert, wobei die anderen unverändert bleiben. SO Wenn ich a, b und c als null und d mit dem vom Benutzer gelieferten Wert setze, möchte ich eine Aktualisierungsabfrage schreiben, die nur den Wert von d als a aktualisiert, und b und c ist null ist etwas erreichbar? 

Ich verwende die SQLite-Datenbank.

Könnte jemand bitte etwas Licht hineinwerfen?

26
Zach

Ohne Ihre Datenbank zu kennen, ist es schwierig, genau zu sein. In SQL Server würde die Syntax so aussehen wie ...

UPDATE MyTable 
SET 
        Field1 = IsNull(@Field1, Field1),
        Field2 = IsNull(@Field2, Field2),
        Field3 = IsNull(@Field3, Field3)
WHERE 
     <your criteria here>

EDIT

Da Sie SQLLite angegeben haben, ersetzen Sie meine IsNull-Funktion durch COALESCE() oder schauen Sie sich alternativ die IfNull-Funktion an.

54
EBarr
 UPDATE your_table
    SET some_column = 42
 WHERE some_column IS NOT NULL

Aktualisiert nur some_column, wenn es nicht null ist

Veröffentlichen einer SQL Server-Lösung mit 2 Tabellen für die Nachwelt. Query fügt zwei Tabellen zusammen und aktualisiert die vorhandenen Werte. Ansonsten bleibt der ursprüngliche Wert erhalten.

tabellen = Table1, Table2 mit Feld1 und Feld2

update t1 WITH (ROWLOCK)
set T1.Field2 = ISNULL(T2.Field2,T1.Field2)
from Table1 T1 Join Table2 T2 
    ON T1.Field1 = T2.Field1
0