Le comportement de PAS COMME avec des valeurs NULL

Je veux récupérer toutes les colonnes d'une table, à l'exception des colonnes de type série. Le plus proche de la requête à ce problème, j'ai été en mesure de venir avec celui-ci:

SELECT column_name FROM information_schema.columns
WHERE table_name = 'table1' AND column_default NOT LIKE 'nextval%'

Mais le problème, c'est son exclusion/filtrage des lignes ayant des valeurs vides pour column_default.Je ne sais pas pourquoi le comportement de Postgres est comme ça. J'ai donc dû modifier ma requête à quelque chose comme ceci:

SELECT column_name FROM information_schema.columns
WHERE table_name = 'table1'
AND ( column_default IS NULL OR column_default NOT LIKE 'nextval%')

Mieux suggestions ou de la justification derrière ce sont les bienvenus.

Les comparaisons avec la valeur NULL n'utilisant pas IS NULL ou IS NOT NULL retour NULL au lieu de vrai ou de faux dans la plupart/tous les systèmes de base de données.

OriginalL'auteur kushi | 2014-04-02