SQLの質問がありますが、これは一部の人にとっては基本的なことかもしれませんが、混乱を招きます。
テーブル 'Person'の列名の例を次に示します:PersonalID、FirstName、LastName、Car、HairColour、FavDrink、FavFood
行を入力したとしましょう:
121312、Rayna、Pieterson、BMW123d、Brown、NULL、NULL
この人の値を更新したいのですが、新しい値がnullでない場合に限り、更新:
121312、Rayna、Pieterson、NULL、Blonde、Fanta、NULL
新しい行は次のようにする必要があります。
121312、Rayna、Pieterson、BMW123d、Blonde、Fanta、NULL
だから私は次のようなことを考えていました:
更新Person(PersonalID、FirstName、LastName、Car、HairColour、FavDrink、FavFood)set Car = @Car(@Carはnullではない)、HairColour = @HairColour(@HairColour ...)...など。
私の唯一の懸念は、すべての値が同じ条件を持つ必要があるため、クエリの最後にすべての条件をグループ化できないことです。 @HairColourがNullでない場合、HairColourを更新するようなことはできません
これには合体を使用します: http://msdn.Microsoft.com/en-us/library/ms190349.aspx
update Person
set Car = coalesce(@Car, Car), HairColour = coalesce(@HairColour, HairColour)
以下が機能するはずです。
UPDATE Person
SET Car = ISNULL(@Car, Car),
HairColour = ISNULL(@HairColour, HairColour),
...
SQL Server [〜#〜] isnull [〜#〜] 関数を使用します。
isnull
関数を使用できます。
update Person
set
Car = isnull(@Car, Car),
HairColour = isnull(@HairColour, HairColour),
FavDrink = isnull(@FavDrink, FavDrink),
FavFood = isnull(@FavFood, FavFood)
where PersonalID = @PersonalID
列をそれ自体と同じに設定し、isnullを使用して、パラメーターに設定します。
UPDATE
YourTable
SET
YourColumn = ISNULL(YourColumn, @yourParameter)
WHERE
ID = @id