Consultas UNION

La construcción UNION es algo diferente en cuanto que es más posible el que haya tipos distintos en un resultado.

Evaluación de UNION

  1. Comprueba si los tipos son idénticos para todos los resultados.

  2. Convierte cada resultado de la clausula UNION para ajustarlo al tipo de la primera clausula SELECT o de la columna de resultado.

Ejemplos

Tipos sin especificar

tgl=> SELECT text 'a' AS "Text" UNION SELECT 'b';
Text
----
a
b
(2 rows)

UNION simple

tgl=> SELECT 1.2 AS Float8 UNION SELECT 1;
Float8
------
     1
   1.2
(2 rows)

UNION transpuesto

Los tipos del UNION son forzados a ajustarse a los tipos de la primera clausula en el UNION:

tgl=> SELECT 1 AS "All integers"
tgl-> UNION SELECT '2.2'::float4
tgl-> UNION SELECT 3.3;
All integers
------------
           1
           2
           3
(3 rows)

Una estrategia alternativa del analizador podría ser escoger el "mejor" tipo del grupo, pero esto es más difícil debido a la técnica recursiva usada en el analizador. De cualquier modo, se usa el "mejor" tipo cuando hacemos una selección dentro de una tabla:

tgl=> CREATE TABLE ff (f float);
CREATE
tgl=> INSERT INTO ff
tgl-> SELECT 1
tgl-> UNION SELECT '2.2'::float4
tgl-> UNION SELECT 3.3;
INSERT 0 3
tgl=> SELECT f AS "Floating point" from ff;
  Floating point
----------------
               1
2.20000004768372
             3.3
(3 rows)