Comment vérifier une valeur IS NULL [or] = @param
(où @param est null)
Ex:
Select column1 from Table1
where column2 IS NULL => works fine
Si je veux remplacer la valeur de comparaison (IS NULL) par @param. Comment cela peut-il être fait
Select column1 from Table1
where column2 = @param => this works fine until @param got some value in it and if is null never finds a record.
Comment cela peut-il atteindre?
select column1 from Table1
where (@param is null and column2 is null)
or (column2 = @param)
Je me rends compte que c’est une vieille question, mais j’avais la même et j’ai eu une autre réponse (plus courte). Remarque: cela ne fonctionne que pour MS SQL Server, qui prend en charge ISNULL (expr, remplacement).
SELECT column1 FROM table1
WHERE ISNULL(column2,'') = ISNULL(@param,'')
Cela suppose également que vous traitiez les chaînes NULL et vides de la même manière.
Pour ce faire, il n’existe pas d’approche de type «taille unique», il existe des implications subtiles en termes de performances. Si vous souhaitez aller au-delà pour que la requête renvoie la réponse correcte, quelle que soit sa lenteur, consultez cet article sur Conditions de recherche dynamique dans T-SQL de Erland Sommarskog
voici un lien vers la partie sur x = @x OR @x IS NULL
WHERE ((COLUMN1 = @PARAM) OR (COLUMN1 IS NULL AND @PARAM IS NULL))
Select column1 from Table1
where (column2 IS NULL and @param IS NULL)
or ( column2 IS NOT NULL AND @param IS NOT NULL AND ( column2 = @param ) )