Tema SQL
Operadores de array (PostgreSQL)
Comparación y solapamiento de arrays: contención @>, contenido <@, solapamiento &&, concatenación ||. Base del modelo de datos array nativo.
Descripción
A @> B verdadero si B está contenido en A como multiset de elementos (con reglas de duplicados según versión). && indica al menos un elemento en común. Útiles para etiquetas, permisos y búsqueda GIN default para arrays. Índice GIN en columna array acelera @> y &&. MySQL no tiene el mismo modelo; SQL Server no tiene arrays SQL de primera clase.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
ARRAY[1,2] && ARRAY[2,3]
ARRAY['a','b'] @> ARRAY['a']
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- GIN
- CREATE INDEX … USING GIN (col array).
- dims
- array_ndims, cardinality para metadatos.
Ejemplos
Ejemplo 1
SELECT ARRAY[1,2,3] && ARRAY[3,4] AS hay_cruce;
SELECT * FROM posts
WHERE tags @> ARRAY['postgresql']::text[];
Ejemplo 2
SELECT ARRAY(SELECT generate_series(1,5)) && ARRAY[3,9] AS solapa;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.