web-dev-qa-db-ja.com

値がnullでない場合、データベースを更新するためのSQLクエリ?

約17のフィールドがあるテーブルがあります。この表で頻繁に更新する必要があります。しかし、問題は毎回いくつかのフィールドのみを更新する場合があるです。そのようなシナリオで更新するためのクエリを記述する最良の方法は何ですか? 値がnullでない場合にのみ更新されるオプションを探しています

たとえば、データベースSay A、B、C、Dに4つのフィールドがあります。ユーザーは、たとえばDの値を更新します。他の値はすべて同じままです。したがって、Dの値のみを更新し、他を変更しない更新クエリが必要です。 SO a、b、cをnull、dをユーザーが指定した値に設定した場合、d、a、b、cの値のみnullを更新する更新クエリを書きたい。それは達成可能なものですか?

SQLiteデータベースを使用しています。

誰かがそれに光を投げてもらえますか?

30
Zach

データベースを知らなくても、特定するのは困難です。 SQL Serverでは、構文は次のようになります...

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

[〜#〜] edit [〜#〜]

SQLLiteを指定したので、IsNull関数をCOALESCE()に置き換えるか、IfNull関数を代わりに見てください。

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

Nullでない場合にのみsome_columnを更新します

後世のために2つのテーブルを持つSQL Serverソリューションを投稿します。クエリは2つのテーブルを結合し、存在する値を更新します。それ以外の場合、元の値が維持されます。

テーブル= table1、table2にはそれぞれfield1とfield2があります

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