Vous n'êtes pas identifié(e).
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
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