10.6. Columnas de salida de SELECT #

Las reglas dadas en las secciones anteriores darán como resultado la asignación de tipos de datos que no sean unknown a todas las expresiones de una consulta SQL, excepto para los literales de tipo no especificado que aparecen como columnas de salida simples de un comando SELECT. Por ejemplo, en

SELECT 'Hello World';

no hay nada que identifique qué tipo de datos debería tener el literal de cadena. En esta situación, PostgreSQL recurrirá a resolver el tipo del literal como text.

Cuando el SELECT es un brazo de un constructor UNION (o INTERSECT o EXCEPT), o cuando aparece dentro de INSERT ... SELECT, esta regla no se aplica ya que las reglas dadas en las secciones anteriores tienen precedencia. El tipo de un literal de tipo no especificado se puede tomar del otro brazo de la UNION en el primer caso, o de la columna de destino en el segundo caso.

Las listas RETURNING se tratan de la misma manera que las listas de salida de SELECT para este propósito.

Note

Antes de PostgreSQL 10, esta regla no existía y los literales de tipo no especificado en una lista de salida de SELECT se dejaban como tipo unknown. Eso tenía diversas consecuencias negativas, por lo que se ha cambiado.