Compartir a través de


Literales NULL e inferencia de tipos (Entity SQL)

Los literales null son compatibles con cualquier tipo del sistema de tipos de Entity SQL. Sin embargo, para que el tipo de un literal null se infiera correctamente, Entity SQL impone determinadas restricciones sobre dónde se puede utilizar un literal null.

Valores null con tipo

Los valores null con tipo se pueden utilizar en cualquier lugar. La inferencia de tipos no es necesaria para los valores null con tipo porque el tipo es conocido. Por ejemplo, puede construir un valor null de tipo Int16 con la siguiente construcción de Entity SQL:

(cast(null as Int16))

Literales null flotantes

Los literales null flotantes se pueden utilizar en los siguientes contextos.

  • Como un argumento para una expresión CAST o TREAT. Esta es la forma que se recomienda para generar una expresión null con tipo.

  • Como un argumento para un método o una función. Se aplican las reglas estándar de sobrecarga.

  • Como uno de los argumentos de una expresión aritmética, como +, - o /. El resto de argumentos no pueden ser literales null; si fuera el caso, no es posible la inferencia de tipos.

  • Como cualquiera de los argumentos de una expresión lógica (AND, OR o NOT). Todos los argumentos se conocen como que son del tipo Boolean.

  • Como el argumento a una expresión IS NULL o IS NOT NULL.

  • Como uno o más de los argumentos de una expresión LIKE. Se espera que todos los argumentos sean cadenas.

  • Como uno o más de los argumentos de un constructor de tipo con nombre.

  • Como uno o más de los argumentos de un constructor multiset. Al menos uno de los argumentos de un constructor multiset debe ser una expresión que no sea un literal null.

  • Como uno o más de los argumentos de una expresión THEN o ELSE en una expresión CASE. Al menos una de las expresiones THEN o ELSE en la expresión CASE debe ser una expresión distinta a una literal null.

Los literales null flotantes no se pueden utilizar en otros escenarios. Por ejemplo, no se pueden usar como argumentos para un constructor de fila.

Consulte también