NULL-Literale und Typrückschluss (Entity SQL)

Nullliterale sind mit allen Typen im Entity SQL-Typsystem kompatibel. Damit der Typ eines Nullliterals jedoch korrekt geschlossen werden kann, schränkt Entity SQL die Verwendung von Nullliteralen ein.

Typisierte Nullen

Typisierte Nullen können stets verwendet werden. Typrückschluss ist für typisierte Nullen nicht erforderlich, da der Typ bekannt ist. Beispielsweise kann mit dem folgenden Entity SQL-Konstrukt eine NULL vom Typ Int16 erstellt werden:

(cast(null as Int16))

Nicht typisierte NULL-Literale

Nicht typisierte NULL-Literale können in den folgenden Kontexten verwendet werden:

  • Als Argument eines CAST-Ausdrucks oder eines TREAT-Ausdrucks. Dies ist die empfohlene Methode zur Erstellung eines typisierten NULL-Ausdrucks.

  • Als Argument einer Methode oder Funktion. Dabei gelten die Standardüberladungsregeln.

  • Als eines der Argumente eines arithmetischen Ausdrucks wie "+", "-" oder "/". Die anderen Argumente können keine NULL-Literale sein, da sonst kein Typrückschluss möglich ist.

  • Als Argumente eines logischen Ausdrucks (AND, OR oder NOT). Von allen Argumenten ist bekannt, dass sie vom booleschen Typ sind.

  • Als Argument eines IS NULL-Ausdrucks oder eines IS NOT NULL-Ausdrucks.

  • Als ein oder mehrere Argumente eines LIKE-Ausdrucks. Von allen Argumenten wird angenommen, dass es sich um Zeichenfolgen handelt.

  • Als ein oder mehrere Argumente eines Konstruktors eines benannten Typs.

  • Als ein oder mehrere Argumente eines Multiset-Konstruktors. Mindestens ein Argument des Multiset-Konstruktors muss ein Ausdruck sein, der kein NULL-Literal ist.

  • Als einer oder mehrere der THEN-Ausdrücke oder ELSE-Ausdrücke in einem CASE-Ausdruck. Mindestens einer der THEN-Audrücke oder ELSE-Ausdrücke im CASE-Ausdruck muss ein Ausdruck sein, der kein NULL-Literal ist.

Nicht typisierte NULL-Literale können nicht in anderen Szenarios verwendet werden. Zum Beispiel können sie nicht als Argumente eines Zeilenkonstruktors verwendet werden.

Siehe auch