Обновление SQL, если параметр не является нулевым или пустым

Я искал некоторые способы проверить, не является ли параметр SQL Server нулевым или пустым, но я не уверен, что лучший способ использовать это при обновлении нескольких столбцов:

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

UPDATE [Users] 
SET FirstName = @firstname, City = @city, Address = @address, ....
WHERE ID = @iduser

Затем я добавил предложение IF перед обновлением, он работает таким образом, но я не уверен, что это лучший способ сделать это, это будет долго, если мне нужно обновить несколько столбцов.

--Check if parameter is not null or empty before updating the column
IF (@firstname IS NOT NULL AND @firstname != '')
   UPDATE [Users] 
   SET FirstName = @firstname 
   WHERE ID = @iduser

IF (@city IS NOT NULL AND @city != '')
   UPDATE [Users] 
   SET City = @city 
   WHERE ID = @iduser
   ...
   ...

Если значение Null или Empty, мне не нужно обновлять, просто сохраните исходное значение в базе данных.

Ответ 1

Не уверен, чего вы пытаетесь достичь, если он пуст, но я бы попробовал использовать IsNull() Я не думаю, что есть IsBlank(), но не должно быть слишком сложно писать себя

Используя только IsNull, ваш запрос будет выглядеть примерно так:

Update [Users]
set    FirstName = IsNull(@FirstName, FirstName),
       City = IsNull(@City, City)
       ....
Where  ...

это обновит строку с параметром, если они НЕ являются нулевыми, в противном случае обновите его сами, иначе ничего не измените.

Ответ 2

Попробуйте этот код SQL, он работает для меня очень хорошо:

UPDATE gp_customer 
SET ville = 'NO'
WHERE ville 
IS NULL
OR ville = ''

Обновить только значение NULL или пустое.