Comparing with null is always a bad idea. Even NULL = NULL
or NULL <> NULL
will return NULL.
Use IS NOT NULL
insetad
In your case the query is identical to:
select p.iuser_id,p.produit_id from portefeuille p
WHERE produit_id=48
AND p.iuser_id <> NULL;
and the value of p.iuser_id <> NULL
will be NULL regardless of the value of p.isuer_id
and this explains why it returns an empty set!