Compartilhar via


Comparações com vários valores (ARRAY)

As colunas armazenadas no índice de conteúdo podem ter vários valores e essas colunas multivaloradas podem ser comparadas usando o predicado de comparação ARRAY.

O predicado de comparação ARRAY tem a seguinte sintaxe:

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

Um erro será retornado se a referência de coluna não for uma coluna com vários valores. O tipo de dados de coluna deve ser compatível com os elementos da lista de comparação. Se necessário, a referência de coluna pode ser convertida como outro tipo de dados.

O operador de comparação (comp_op) pode ser qualquer um dos operadores de comparação normais. Em uma comparação multivalor, os operadores de comparação têm significados ligeiramente diferentes, dependendo se um quantificador é usado. Os quantificadores identificam se uma comparação deve ser feita em relação a todos ou alguns dos valores na lista de comparação. As funções dos operadores de comparação são fornecidas nas tabelas que descrevem cada quantificador (ALL e SOME) posteriormente neste documento.

O valor após o operador especifica um único valor literal que é comparado com todos os elementos da coluna multivalor. Se algum elemento corresponder ao valor, o predicado será true.

A lista de comparação especifica uma matriz de valores literais que são comparados com a coluna multivalor. A sintaxe da lista de comparação segue:

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

Importante

Esteja ciente da sintaxe da lista de comparação. O grupo de literais que compõem a lista de comparação deve estar cercado por colchetes. Não envolva elementos individuais da lista de comparação por colchetes. Portanto, ARRAY [1] e ARRAY [1,2,3] são válidos, mas ARRAY [1[,2][,3]] não é.

 

O método usado para determinar se a comparação multivalor retorna true ou false é especificada pelo quantificador opcional. As seções a seguir descrevem cada quantificador e como cada operador de comparação funciona quando o quantificador é usado.

Quantificador Ausente

Se nenhum quantificador for especificado, cada elemento no lado esquerdo da comparação será comparado com o elemento na mesma posição no lado direito. A comparação começa com o primeiro elemento nas matrizes e progride até o último elemento. Se todos os elementos à esquerda forem equivalentes aos elementos correspondentes no lado direito, o número de elementos de matriz será usado para determinar qual matriz é maior.

A tabela a seguir mostra a operação dos operadores de comparação quando nenhum quantificador é especificado e fornece uma breve descrição de cada um.

Operador Descrição
= 'Equal to' retorna true quando cada elemento do lado esquerdo tem o mesmo valor que o elemento do lado direito correspondente e ambas as matrizes têm o mesmo número de elementos.
!= ou <> 'Não igual a' retorna true quando um ou mais elementos do lado esquerdo têm valores que diferem dos elementos correspondentes do lado direito ou quando as matrizes do lado esquerdo e direito não têm o mesmo número de elementos.
> 'Maior que' retorna true quando o valor de cada elemento do lado esquerdo é maior que o valor do elemento correspondente do lado direito. Se todos os valores de elemento do lado esquerdo corresponderem exatamente aos elementos correspondentes do lado direito e a matriz do lado esquerdo tiver mais elementos do que a matriz do lado direito, 'maior que' retornará true.
>= 'Maior ou igual a' retorna true quando o valor de cada elemento do lado esquerdo é maior ou igual ao valor do elemento correspondente do lado direito. Se todos os valores de elemento do lado esquerdo forem iguais ou maiores que os elementos correspondentes do lado direito e a matriz do lado esquerdo tiver os mesmos ou mais elementos que a matriz do lado direito, 'maior que' retornará true.
< 'Less than' retorna true quando o valor de cada elemento do lado esquerdo é menor que o valor do elemento correspondente do lado direito. 'Less than' também retorna true quando o lado esquerdo tem menos elementos do que o lado direito.
<= 'Menor ou igual a' retorna true quando o valor de cada elemento do lado esquerdo é menor ou igual ao valor do elemento correspondente do lado direito. Se todos os valores de elemento do lado esquerdo forem iguais ou menores que os elementos correspondentes do lado direito e a matriz do lado esquerdo tiver os mesmos ou menos elementos que a matriz do lado direito, 'maior que' retornará true.

 

Quantificador ALL

O quantificador ALL especifica que cada elemento no lado esquerdo é comparado com cada elemento no lado direito. Para retornar true, a comparação deve ser verdadeira para cada elemento no lado esquerdo quando comparado a cada elemento no lado direito. O número de elementos nos lados da matriz esquerda e direita não tem efeito sobre o resultado.

A tabela a seguir mostra como cada operador de comparação funciona com o quantificador ALL.

Operador Descrição
= 'Equal to' retorna true quando cada valor de elemento do lado esquerdo é o mesmo que cada valor de elemento do lado direito.
!= ou <> 'Not equal to' retorna true quando pelo menos um dos valores de elemento do lado esquerdo é diferente de qualquer um dos valores de elemento do lado direito.
> 'Maior que' retorna true quando cada valor de elemento do lado esquerdo é maior que cada valor de elemento do lado direito.
>= 'Maior ou igual a' retorna true quando cada valor de elemento do lado esquerdo é maior ou igual a cada valor de elemento do lado direito.
< 'Less than' retorna true quando cada valor de elemento do lado esquerdo é menor que cada valor de elemento do lado direito.
<= 'Menor ou igual a' retorna true quando cada valor de elemento do lado esquerdo é menor ou igual a cada valor de elemento do lado direito.

 

Quantificador SOME (ou ANY)

O quantificador SOME e o quantificador ANY podem ser usados de forma intercambiável. Assim como o quantificador ALL, o quantificador SOME especifica que cada elemento no lado esquerdo é comparado com cada elemento no lado direito. Para retornar true, a comparação deve ser verdadeira para pelo menos um dos elementos no lado esquerdo quando comparado a qualquer elemento no lado direito. O número de elementos à esquerda e à direita não tem efeito sobre o resultado.

A tabela a seguir mostra como cada operador de comparação funciona com o quantificador SOME.

Operador Descrição
= 'Equal to' retorna true quando pelo menos um dos valores de elemento do lado esquerdo é o mesmo que qualquer um dos valores de elemento do lado direito.
!= ou <> 'Not equal to' retorna true quando nenhum dos valores de elemento do lado esquerdo é o mesmo que qualquer um dos valores de elemento do lado direito.
> 'Maior que' retorna true quando pelo menos um dos valores de elemento do lado esquerdo é maior do que qualquer um dos valores de elemento do lado direito.
>= 'Maior ou igual a' retorna true quando pelo menos um dos valores de elemento do lado esquerdo é maior ou igual a qualquer um dos valores de elemento do lado direito.
< 'Less than' retorna true quando pelo menos um dos valores de elemento do lado esquerdo é menor que qualquer um dos valores de elemento do lado direito.
<= 'Menor ou igual a' retorna true quando pelo menos um dos valores de elemento do lado esquerdo é menor ou igual a qualquer um dos valores de elemento do lado direito.

 

Exemplos

O exemplo a seguir verifica se os documentos estão nas categorias "Finanças" ou "Planejamento":

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

Todas as comparações a seguir são avaliadas como verdadeiras. Lembre-se de que, em uso real, a sintaxe de consulta de pesquisa requer que o lado esquerdo seja uma propriedade, não um 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]

Referência

Predicado LIKE

Comparação de valor literal

Predicado NULL

Conceitual

Predicados de texto completo

Predicados de texto não completo