NULL ist verwirrend, weil es nicht bedeutet, dass der wert "leer" ist, vielmehr bedeutet es, es sind keine Aussagen über diesen Spalteninhalt möglich.
Aussagen über den Wert des Datenfelds sind schon möglich, NULL bedeutet Information nicht verfügbar bzw. nicht erfasst.
Wir haben - und das verwirrt viele Entwickler - auf einmal eine "dreiwertige Logik", ein Wert kann unbekannt sein oder als Wert einen String der Länge 0 haben oder eben einen String der Länge grösser 0 haben.
NULL wurde eingeführt, weil die Kodierung "Leerstring für Information nicht verfügbar bzw. nicht erfasst" als inkonsistent empfunden wurde bzw. inkonsistent ist.
Einige "Weise" empfehlen grunsätzlich auf nullability zu verzichten um die Entwickler nicht zu verwirren, Wir gehören nicht zu diesen "Weisen".