[英]SQL: How can I update a value on a column only if that value is null?
我有一個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
所以我想的是:
更新人(PersonalID,FirstName,LastName,Car,HairColour,FavDrink,FavFood)設置Car = @ Car(其中@Car不為空),HairColour = @HairColour(其中@HairColour ......)......等
我唯一擔心的是我無法在查詢結束時對所有條件進行分組,因為它將要求所有值具有相同的條件。 如果@HairColour不是Null,我不能像Update HairColour那樣做
Id使用coalesce: 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 round將列設置為等於它自己將其設置為您的參數。
UPDATE
YourTable
SET
YourColumn = ISNULL(YourColumn, @yourParameter)
WHERE
ID = @id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.