我有一个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那样做
4 回答
Id使用coalesce:http://msdn.microsoft.com/en-us/library/ms190349.aspx
以下应该有效:
它使用返回的SQL Server ISNULL函数
如果它是非null的第一个值,
或者,否则,第二个值(在这种情况下,是行的当前值) .
您可以使用
isnull
函数:使用isnull round将列设置为等于它自己将其设置为您的参数 .