Unter normalen Bedingungen ergibt ein Vergleich eines NULL
-Wertes mit einem anderen Wert einen anderen NULL
-Wert.
Gibt NULL
Dies gilt (meistens) für den Vergleich beliebiger Zeilen, wie in der Dokumentation, 9.23, erklärt. 5. Vergleich der Zeilenkonstruktoren :
%Vor% Gibt NULL
Beim Vergleich gut definierter zusammengesetzter Typen werden NULL
-Werte jedoch als gleich behandelt.
Gibt TRUE
Dieses Verhalten scheint nicht dokumentiert zu sein (ich habe nachgesehen und keinen Hinweis auf das Verhalten gefunden).
Ich möchte dieses Verhalten verwenden, um einige Geschäftsregeln zu implementieren, und möchte sicherstellen, dass dies sicher ist.
Ich fand das in der offiziellen Dokumentation : [... ] In anderen Kontexten, in denen zwei Werte vom zusammengesetzten Typ verglichen werden, werden zwei NULL-Feldwerte als gleich betrachtet, und ein NULL wird als größer als ein Nicht-NULL betrachtet. Dies ist erforderlich, um ein konsistentes Sortier- und Indizierungsverhalten für zusammengesetzte Typen zu erhalten. . Ich denke, das löst deine Frage.
Illustration (Entschuldigung, ich kann das nicht in einem Kommentar, brauche die Formatierung):
%Vor%Ergebnis:
%Vor%Tags und Links postgresql postgresql-9.4