Литералы NULL и вывод типов (Entity SQL)

Литералы NULL совместимы с любым типом в системе типов Entity SQL. Однако для правильного вывода типа нулевого литерала Entity SQL накладывает определенные ограничения на то, где можно использовать литерал NULL.

Типизированные значения NULL

Типизированные значения NULL могут использоваться где угодно. Для типизированных значений NULL не требуется логический вывод типа, поскольку тип уже известен. Например, можно создать значение NULL типа Int16 со следующей конструкцией Entity SQL:

(cast(null as Int16))

Свободные литералы NULL

Свободные литералы NULL используются в следующих ситуациях.

  • Как аргумент выражений CAST и TREAT. Это предпочтительный способ создания типизированного выражения NULL.

  • Как аргумент метода или функции. Применяются стандартные правила перегрузки.

  • Как один из аргументов арифметического выражения, например +, - или /. Остальные аргументы не могут быть литералами NULL, иначе вывод типа будет невозможен.

  • Как один из аргументов логического выражения (И, ИЛИ, НЕ). Все аргументы должны относиться к логическому типу.

  • Как аргумент выражений IS NULL и IS NOT NULL.

  • Как один из аргументов выражения LIKE. Все аргументы должны быть строками.

  • Как один или несколько аргументов конструктора именованного типа.

  • Как один или несколько аргументов конструктора мультинабора. По крайней мере один аргумент конструктора мультинабора должен быть выражением, отличным от литерала NULL.

  • Как один из аргументов выражений THEN и ELSE в выражении CASE. По крайней мере одно из выражений THEN или ELSE в выражении CASE должно быть отлично от литерала NULL.

Ни в каких других ситуациях свободные литералы NULL использоваться не могут. Например, их нельзя использовать в качестве аргументов конструктора строки.

См. также