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
Comprueba si los tipos son id�nticos para todos los resultados.
Convierte cada resultado de la clausula UNION para ajustarlo al tipo de la primera clausula SELECT o de la columna de resultado.
tgl=> SELECT text 'a' AS "Text" UNION SELECT 'b'; Text ---- a b (2 rows) |
tgl=> SELECT 1.2 AS Float8 UNION SELECT 1; Float8 ------ 1 1.2 (2 rows) |
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) |