SQL: Как я могу обновить значение на столбце, только если то значение является нулевым?

У меня есть вопрос о SQL, который может быть основным некоторым, но смущает меня.

Вот пример имен столбцов для таблицы 'Person': PersonalID, FirstName, LastName, Автомобиль, HairColour, FavDrink, FavFood

Скажем, то, что я ввел строку:

121312, Rayna, Pieterson, BMW123d, Brown, ПУСТОЙ УКАЗАТЕЛЬ, ПУСТОЙ УКАЗАТЕЛЬ

Теперь я хочу обновить значения для этого человека, но только если новое значение не является нулевым, Обновление:

121312, Rayna, Pieterson, ПУСТОЙ УКАЗАТЕЛЬ, блондинка, фанта, ПУСТОЙ УКАЗАТЕЛЬ

Новая строка должна быть:

121312, Rayna, Pieterson, BMW123d, блондинка, фанта, ПУСТОЙ УКАЗАТЕЛЬ

Таким образом, я думал что-то вроде:

Обновите Человека (PersonalID, FirstName, LastName, Автомобиль, HairColour, FavDrink, FavFood) Автомобиль набора = @Car (где @Car не является пустым), HairColour = @HairColour (где @HairColour...)... и т.д.

Мое единственное беспокойство - то, что я не могу сгруппировать все условия в конце запроса, потому что он потребует, чтобы все значения имели то же условие. Не могу я делать что-то, любят Обновление HairColour, если @HairColour не является Пустым

12
задан Alicia 27 November 2015 в 10:24
поделиться

4 ответа

Я бы использовал объединение для этого: http://msdn.microsoft.com/en-us/library/ms190349.aspx

update Person
set Car = coalesce(@Car, Car), HairColour = coalesce(@HairColour, HairColour)
24
ответ дан 2 December 2019 в 03:28
поделиться

Следующее должно работать:

UPDATE Person
   SET Car = ISNULL(@Car, Car),
       HairColour = ISNULL(@HairColour, HairColour),
       ...

Он использует функцию SQL Server ISNULL , которая возвращает

  • первое значение, если оно не равно NULL,
  • или, в противном случае, второе значение. (который в данном случае является текущим значением строки).
13
ответ дан 2 December 2019 в 03:28
поделиться

Установите столбец равным самому себе с нулевым округлением, установив его в свой параметр.

UPDATE
    YourTable
SET
   YourColumn = ISNULL(YourColumn, @yourParameter)
WHERE
    ID = @id
2
ответ дан 2 December 2019 в 03:28
поделиться

Вы можете использовать функцию isnull :

update Person
set
  Car = isnull(@Car, Car),
  HairColour = isnull(@HairColour, HairColour),
  FavDrink = isnull(@FavDrink, FavDrink),
  FavFood = isnull(@FavFood, FavFood)
where PersonalID = @PersonalID
4
ответ дан 2 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: