web-dev-qa-db-fra.com

Mise à jour SQL si le paramètre n'est pas nul ou vide

J'ai cherché des moyens de vérifier si un paramètre SQL Server n'est pas nul ou vide, mais je ne sais pas quel est le meilleur moyen de l'utiliser lors de la mise à jour de plusieurs colonnes:

Au début, j'avais ce code qui se mettait à jour sans vérifier les valeurs vides ou Null:

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

Ensuite, j'ai ajouté une clause IF avant la mise à jour. Cela fonctionne de cette façon, mais je ne suis pas sûr que ce soit la meilleure façon de le faire. La mise à jour de plusieurs colonnes sera longue.

--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
   ...
   ...

Si la valeur est Null ou Empty, je n'ai pas besoin de mettre à jour, conservez simplement la valeur d'origine dans la base de données.

16
Alex

je ne sais pas ce que vous essayez de faire si c'est vide, mais j'essaierais d'utiliser IsNull(). Je ne pense pas qu'il existe un IsBlank(), mais il ne devrait pas être trop difficile d'écrire vous-même

En utilisant seulement IsNull, votre requête ressemblerait à quelque chose comme ...

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

cela mettra à jour la ligne avec la valeur param si elles ne sont PAS NULL, sinon la mettre à jour pour elle-même, c'est-à-dire ne rien changer.

46
Cheruvian

Essayez ce codeSQLnative ça marche très bien pour moi: 

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

Mise à jour juste la valeur NULL ou vide.

0
MISSIRIA