Vérifier si une Postgres composite champ est null/vide

Avec postgres types de composé vous pouvez en fait créer un champ avec la structure étant défini comme une autre table. J'ai le composite champ "destinataire" de type "personne". Ce champ de destinataire est souvent laissée vide dans mon scénario spécifique. Quelle est la bonne façon de vérifier si un composite de champ est vide. J'ai essayé:

select * from bla where recipient is not null
select * from bla where recipient is null
select * from bla where recipient = null
select * from bla where recipient != null

Dans tous ces cas, il ne retourne rien. Alors, comment avez-vous correctement vérifier si une valeur composite est vide ou pas?

Mise à JOUR

Après quelques lecture, il semble comme c'est mon problème:

On peut penser que !(x IS NULL) = x IS NOT NULL est vrai dans tous les cas. Mais il est une exception - types de composé. Quand un seul champ d'une valeur composite est NULL et un autre champ est NOT NULL, alors le résultat de ces deux opérateurs est faux. IS NULL est vrai, que lorsque tous les champs sont NULL. IS NOT NULL est vrai, que lorsque tous les champs sont NOT NULL. Pour tout litige entre les deux, les deux opérateurs de retour faux.

J'ai quelques champs qui sont nuls, et d'autres qui ne le sont pas. J'espérais que le champ doit être considéré comme not NULL, si n'importe quel élément dans le domaine du composite n'est pas nul... pas quand ils ne sont pas null. Est-il un moyen de contourner ce problème autre que la vérification de chaque domaine?

InformationsquelleAutor coderama | 2014-03-31