Prova qualcosa come:
where (X.Name <> 'xxx' or X.Name is null)
and (XY.Product <> 1 or XY.Product is null)
Poiché, per definizione, NULL
è un valore sconosciuto (bit semplificato ma OK per questa spiegazione), non sarà né uguale né diverso da un dato valore - ecco perché IS NULL
è richiesto qui.