Compartir a través de


Comparaciones con varios valores (ARRAY)

Las columnas almacenadas en el índice de contenido pueden tener varios valores y esas columnas multivalor se pueden comparar mediante el predicado de comparación ARRAY.

El predicado de comparación ARRAY tiene la sintaxis siguiente:

...WHERE <column> <comp_op> [<quantifier>] <comparison_list>
                
...WHERE <column> <comp_op> <value>

Se devuelve un error si la referencia de columna no es una columna con varios valores. El tipo de datos de columna debe ser compatible con los elementos de la lista de comparación. Si es necesario, la referencia de columna se puede convertir como otro tipo de datos.

El operador de comparación (comp_op) puede ser cualquiera de los operadores de comparación normales. En una comparación multivalor, los operadores de comparación tienen significados ligeramente diferentes en función de si se usa un cuantificador. Los cuantificadores identifican si se debe realizar una comparación con todos o algunos de los valores de la lista de comparación. Las funciones de los operadores de comparación se proporcionan en las tablas que describen cada cuantificador (ALL y SOME) más adelante en este documento.

El valor después del operador especifica un valor literal único que se compara con todos los elementos de la columna con varios valores. Si algún elemento coincide con el valor, el predicado es true.

La lista de comparación especifica una matriz de valores literales que se comparan con la columna multivalor. La sintaxis de la lista de comparación sigue:

ARRAY '['<literal> [,<literal>]']'

Importante

Tenga en cuenta la sintaxis de la lista de comparación. El grupo de literales que componen la lista de comparación debe estar rodeado por corchetes. No incluya elementos individuales de la lista de comparación entre corchetes. Por lo tanto, ARRAY [1] y ARRAY [1,2,3] son válidos, pero ARRAY [1[,2][,3]] no lo es.

 

El método utilizado para determinar si la comparación multivalor devuelve true o false se especifica mediante el cuantificador opcional. En las secciones siguientes se describen cada cuantificador y cómo funciona cada operador de comparación cuando se usa el cuantificador.

Cuantificador ausente

Si no se especifica ningún cuantificador, cada elemento del lado izquierdo de la comparación se compara con el elemento en la misma posición del lado derecho. La comparación comienza con el primer elemento de las matrices y avanza a través del último elemento. Si todos los elementos del lado izquierdo son equivalentes a los elementos correspondientes del lado derecho, se usa el número de elementos de matriz para determinar qué matriz es mayor.

En la tabla siguiente se muestra el funcionamiento de los operadores de comparación cuando no se especifica ningún cuantificador y se proporciona una breve descripción de cada uno.

Operator Descripción
= "Igual a" devuelve true cuando cada elemento izquierdo tiene el mismo valor que el elemento del lado derecho correspondiente y ambas matrices tienen el mismo número de elementos.
!= o <> 'Not equal to' devuelve true cuando uno o varios elementos del lado izquierdo tienen valores que difieren de los elementos correspondientes del lado derecho, o cuando las matrices del lado izquierdo y del lado derecho no tienen el mismo número de elementos.
> "Mayor que" devuelve true cuando el valor de cada elemento del lado izquierdo es mayor que el valor del elemento del lado derecho correspondiente. Si todos los valores de elemento del lado izquierdo coinciden exactamente con los elementos del lado derecho correspondientes y la matriz del lado izquierdo tiene más elementos que la matriz del lado derecho, "mayor que" devuelve true.
>= "Mayor o igual que" devuelve true cuando el valor de cada elemento izquierdo es mayor o igual que el valor del elemento del lado derecho correspondiente. Si todos los valores del elemento de la izquierda son iguales o mayores que los elementos del lado derecho correspondientes y la matriz del lado izquierdo tiene los mismos o más elementos que la matriz del lado derecho, "mayor que" devuelve true.
< "Menor que" devuelve true cuando el valor de cada elemento del lado izquierdo es menor que el valor del elemento del lado derecho correspondiente. "Menor que" también devuelve true cuando el lado izquierdo tiene menos elementos que el lado derecho.
<= "Menor o igual que" devuelve true cuando el valor de cada elemento izquierdo es menor o igual que el valor del elemento del lado derecho correspondiente. Si todos los valores del elemento izquierdo son iguales o menores que los elementos correspondientes del lado derecho y la matriz del lado izquierdo tiene los mismos o menos elementos que la matriz del lado derecho, "mayor que" devuelve true.

 

CUANTIFICADOR ALL

El cuantificador ALL especifica que cada elemento del lado izquierdo se compara con cada elemento del lado derecho. Para devolver true, la comparación debe ser true para cada elemento del lado izquierdo en comparación con cada elemento del lado derecho. El número de elementos de los lados izquierdo y derecho de la matriz no tiene ningún efecto en el resultado.

En la tabla siguiente se muestra cómo funciona cada operador de comparación con el cuantificador ALL.

Operator Descripción
= "Igual a" devuelve true cuando cada valor de elemento de la izquierda es el mismo que cada valor de elemento del lado derecho.
!= o <> 'Not equal to' devuelve true cuando al menos uno de los valores del elemento de la izquierda es diferente de cualquiera de los valores del elemento del lado derecho.
> "Mayor que" devuelve true cuando cada valor de elemento del lado izquierdo es mayor que cada valor de elemento del lado derecho.
>= "Mayor o igual que" devuelve true cuando cada valor de elemento izquierdo es mayor o igual que cada valor de elemento del lado derecho.
< "Menor que" devuelve true cuando cada valor de elemento izquierdo es menor que cada valor de elemento del lado derecho.
<= "Menor o igual que" devuelve true cuando cada valor de elemento del lado izquierdo es menor o igual que cada valor de elemento del lado derecho.

 

Cuantificador SOME (o ANY)

El cuantificador SOME y el cuantificador ANY se pueden usar indistintamente. Al igual que el cuantificador ALL, el cuantificador SOME especifica que cada elemento del lado izquierdo se compara con cada elemento del lado derecho. Para devolver true, la comparación debe ser verdadera para al menos uno de los elementos del lado izquierdo en comparación con cualquier elemento del lado derecho. El número de elementos de las matrices izquierda y derecha no tiene ningún efecto en el resultado.

En la tabla siguiente se muestra cómo funciona cada operador de comparación con el cuantificador SOME.

Operator Descripción
= 'Equal to' devuelve true cuando al menos uno de los valores del elemento de la izquierda es el mismo que cualquiera de los valores de elemento del lado derecho.
!= o <> 'Not equal to' devuelve true cuando ninguno de los valores del elemento del lado izquierdo es el mismo que cualquiera de los valores de elemento del lado derecho.
> "Mayor que" devuelve true cuando al menos uno de los valores del elemento del lado izquierdo es mayor que cualquiera de los valores de elemento del lado derecho.
>= "Mayor o igual que" devuelve true cuando al menos uno de los valores del elemento de la izquierda es mayor o igual que cualquiera de los valores del elemento del lado derecho.
< "Menor que" devuelve true cuando al menos uno de los valores de elemento del lado izquierdo es menor que cualquiera de los valores de elemento del lado derecho.
<= "Menor o igual que" devuelve true cuando al menos uno de los valores del elemento de la izquierda es menor o igual que cualquiera de los valores del elemento del lado derecho.

 

Ejemplos

En el ejemplo siguiente se comprueba si los documentos están en las categorías "Finance" o "Planning":

SELECT System.ItemUrl FROM SystemIndex WHERE System.Category =
SOME ARRAY['Finance','Planning']

Todas las comparaciones siguientes evalúan true. Recuerde que, en uso real, la sintaxis de la consulta de búsqueda requiere que el lado izquierdo sea una propiedad, no un valor literal.

ARRAY [1,2] > ARRAY [1,1]
ARRAY [1,2] > ARRAY [1,1,2]
ARRAY [1,2] < ARRAY [1,2,3]
ARRAY [1,2] = SOME ARRAY [1,12,27,35,2]
ARRAY [1,1] != ALL ARRAY [1,2]
ARRAY [1,20,21,22] < SOME ARRAY [0,40]
ARRAY [1,20,21,22] < ANY ARRAY [0,40]

Referencia

Predicado LIKE

Comparación de valores literales

Predicado NULL

Conceptual

Predicados de texto completo

Predicados de texto no completo