Essayez quelque chose comme :
where (X.Name <> 'xxx' or X.Name is null)
and (XY.Product <> 1 or XY.Product is null)
Puisque, par définition NULL
est une valeur inconnue (un peu simplifiée mais OK pour cette explication), elle ne sera ni égale ni égale à une valeur donnée - c'est pourquoi le IS NULL
est requis ici.