PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 18/11/2016 11:31:22

yaka
Membre

[SQL] Comparaison champ à champ avec une valeur potentiellement nulle

Bonjour à tous,

Je débute en PostGreSQL (avant je bossais uniquement avec Oracle) et je viens de tomber sur quelque chose qui m'étonne.

Voici ma requête :
update faqir f set opennms_status = 'bad_leaf'
from ipinterface ii
inner join node n using(nodeid)
inner join assets a using(nodeid)
where ii.ipaddr=f.ip_admin
and f.hostname=n.nodesysname
and f.feuillet<>a.notifycategory;

L'idée est simplement de mettre à jour un statut dans une table dans le cas où la valeur du champ "feuillet" diffère de celle du champ "notifycategory".

La requête fonctionne très bien quand les deux champs ont une valeur (chaîne de caractères). En revanche, dans le cas où le champ "feuillet" est valorisé et le champ "notifycategory" est null, la comparaison (f.feuillet<>a.notifycategory) semble renvoyer false ...

Connaissez-vous ce point ? Dans mes souvenirs, Oracle ne fonctionne pas comme ça.

Merci pour votre aide

Hors ligne

#2 18/11/2016 11:52:14

yaka
Membre

Re : [SQL] Comparaison champ à champ avec une valeur potentiellement nulle

Finalement je viens de trouver la solution.
Pour comparer des champs qui peuvent être potentiellement null, il faut utiliser "is distinct from" et "is not distinct from".
Lien wiki : https://wiki.postgresql.org/wiki/Is_distinct_from.

Hors ligne

Pied de page des forums