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.
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.