Ответ 1
Для использования Id используется объединение: http://msdn.microsoft.com/en-us/library/ms190349.aspx
update Person
set Car = coalesce(@Car, Car), HairColour = coalesce(@HairColour, HairColour)
У меня есть вопрос SQL, который может быть основным для некоторых, но меня смущает.
Вот пример имен столбцов для таблицы "Человек": PersonalID, FirstName, LastName, Car, HairColour, FavDrink, FavFood
Скажем, что я ввожу строку:
121312, Rayna, Pieterson, BMW123d, Brown, NULL, NULL
Теперь я хочу обновить значения для этого человека, но только если новое значение не равно null, Update:
121312, Rayna, Pieterson, NULL, Blonde, Fanta, NULL
Новая строка должна быть:
121312, Rayna, Pieterson, BMW123d, Блондинка, Фанта, NULL
Итак, я думал что-то вроде:
Обновить персонаж (PersonalID, FirstName, LastName, Car, HairColour, FavDrink, FavFood) set Car = @Car (где @Car не является нулевым), HairColour = @HairColour (где @HairColour...)... и т.д.
Моя единственная забота заключается в том, что я не могу сгруппировать все условия в конце запроса, потому что для всех этих значений потребуются одинаковые условия. Не могу ли я сделать что-то вроде Update HairColour, если @HairColour не является Null
Для использования Id используется объединение: 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 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