Los operadores de conjuntos para los tipos de cuadro delimitador son la unión (+
) y la intersección (*
). En el caso de la unión, los operandos deben tener exactamente las mismas dimensiones, de lo contrario se genera un error. Además, si los operandos no se superponen en todas las dimensiones se genera un error, ya que esto daría como resultado una caja con valores disjuntos, que no se puede representar. El operador calcula la unión en todas las dimensiones que están presentes en ambos argumentos. En el caso de intersección, los operandos deben tener al menos una dimensión común, de lo contrario se genera un error. El operador calcula la intersección en todas las dimensiones que están presentes en ambos argumentos.
Unión de los cuadros delimitadores
box + box: box
SELECT tbox 'TBOX((1,2001-01-01),(3,2001-01-03))' + tbox 'TBOX((2,2001-01-02),(4,2001-01-04))'; -- "TBOX((1,2001-01-01),(4,2001-01-04))" SELECT stbox 'STBOX ZT((1,1,1,2001-01-01),(2,2,2,2001-01-02))' + stbox 'STBOX T((2,2,2001-01-01),(3,3,2001-01-03))'; -- ERROR: Boxes must be of the same dimensionality SELECT tbox 'TBOX((1,2001-01-01),(3,2001-01-02))' + tbox 'TBOX((2,2001-01-03),(4,2001-01-04))'; -- ERROR: Result of box union would not be contiguous
Intersección de los cuadros delimitadores
box * box: box
SELECT tbox 'TBOX((1,2001-01-01),(3,2001-01-03))' * tbox 'TBOX((,2001-01-02),(,2001-01-04))'; -- "TBOX((,2001-01-02),(,2001-01-03))" SELECT stbox 'STBOX ZT((1,1,1,2001-01-01),(3,3,3,2001-01-02))' * stbox 'STBOX((2,2),(4,4))'; -- "STBOX((2,2),(3,3))"