簡體   English   中英

SQL:如果該值為null,如何更新列上的值?

[英]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函數

  • 第一個值,如果它是非null,
  • 或者,否則,第二個值(在這種情況下,是行的當前值)。

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM