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 dimensiónes, de lo contrario se genera un error. Además, si los operandos no se superponen en todas las dimensiónes 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 dimensiónes 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 dimensiónes que están presentes en ambos argumentos.
Unión de los cuadros delimitadores
box + box → box
SELECT tbox 'TBOXINT XT([1,3),[2001-01-01,2001-01-03])' + tbox 'TBOXINT XT([2,4),[2001-01-02,2001-01-04])'; -- TBOXINT XT([1,4),[2001-01-01, 2001-01-04]) SELECT stbox 'STBOX ZT(((1,1,1),(2,2,2)),[2001-01-01,2001-01-02])' + stbox 'STBOX XT(((2,2),(3,3)),[2001-01-01,2001-01-03])'; -- ERROR: The arguments must be of the same dimensionality SELECT tbox 'TBOXFLOAT XT((1,3),[2001-01-01,2001-01-02])' + tbox 'TBOXFLOAT XT((3,4),[2001-01-03,2001-01-04])'; -- ERROR: Result of box union would not be contiguous
Intersección de los cuadros delimitadores
box * box → box
SELECT tbox 'TBOXINT XT([1,3),[2001-01-01,2001-01-03])' * tbox 'TBOX T([2001-01-02,2001-01-04))'; -- TBOX T([2001-01-02,2001-01-03)) SELECT stbox 'STBOX ZT(((1,1,1),(3,3,3)),[2001-01-01,2001-01-02])' * stbox 'STBOX X((2,2),(4,4))'; -- STBOX X((2,2),(3,3))