Condividi tramite


Confronti tra valori multivalore (ARRAY)

Le colonne archiviate nell'indice di contenuto possono avere più valori e tali colonne multivalore possono essere confrontate usando il predicato di confronto ARRAY.

Il predicato di confronto ARRAY ha la sintassi seguente:

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

Se il riferimento alla colonna non è una colonna multivalore, viene restituito un errore. Il tipo di dati della colonna deve essere compatibile con gli elementi dell'elenco di confronto. Se necessario, è possibile eseguire il cast del riferimento alla colonna come un altro tipo di dati.

L'operatore di confronto (comp_op) può essere uno qualsiasi degli operatori di confronto normali. In un confronto multivalore gli operatori di confronto hanno significati leggermente diversi a seconda che venga usato un quantificatore. I quantificatori identificano se è necessario eseguire un confronto con tutti o alcuni dei valori nell'elenco di confronto. Le funzioni degli operatori di confronto vengono fornite nelle tabelle che descrivono ogni quantificatore (ALL e SOME) più avanti in questo documento.

Il valore dopo l'operatore specifica un singolo valore letterale confrontato con tutti gli elementi della colonna multivalore. Se un elemento corrisponde al valore, il predicato è true.

L'elenco di confronto specifica una matrice di valori letterali confrontati con la colonna multivalore. La sintassi per l'elenco di confronto è la seguente:

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

Importante

Tenere presente la sintassi dell'elenco di confronto. Il gruppo di valori letterali che costituiscono l'elenco di confronto deve essere racchiuso tra parentesi quadre. Non racchiudere singoli elementi dell'elenco di confronto tra parentesi quadre. Di conseguenza, ARRAY [1] e ARRAY [1,2,3] sono validi, ma ARRAY [1[,2][,3]] non è valido.

 

Il metodo utilizzato per determinare se il confronto multivalore restituisce true o false viene specificato dal quantificatore facoltativo. Le sezioni seguenti descrivono ogni quantificatore e il funzionamento di ogni operatore di confronto quando viene usato il quantificatore.

Quantificatore assente

Se non viene specificato alcun quantificatore, ogni elemento a sinistra del confronto viene confrontato con l'elemento nella stessa posizione sul lato destro. Il confronto inizia con il primo elemento nelle matrici e passa attraverso l'ultimo elemento. Se tutti gli elementi sul lato sinistro sono equivalenti agli elementi corrispondenti sul lato destro, viene utilizzato il numero di elementi della matrice per determinare quale matrice è maggiore.

La tabella seguente illustra l'operazione degli operatori di confronto quando non viene specificato alcun quantificatore e fornisce una breve descrizione di ognuno di essi.

Operatore Descrizione
= 'Uguale a' restituisce true quando ogni elemento a sinistra ha lo stesso valore dell'elemento a destra corrispondente e entrambe le matrici hanno lo stesso numero di elementi.
!= o <> 'Not equal to' restituisce true quando uno o più elementi sul lato sinistro hanno valori diversi dagli elementi a destra corrispondenti o quando le matrici lato sinistro e destro non hanno lo stesso numero di elementi.
> 'Maggiore di' restituisce true quando il valore di ogni elemento a sinistra è maggiore del valore dell'elemento a destra corrispondente. Se tutti i valori degli elementi sul lato sinistro corrispondono esattamente agli elementi di destra corrispondenti e la matrice sul lato sinistro ha più elementi della matrice a destra, 'greater than' restituisce true.
>= 'Maggiore o uguale a' restituisce true quando il valore di ogni elemento sul lato sinistro è maggiore o uguale al valore dell'elemento a destra corrispondente. Se tutti i valori degli elementi sul lato sinistro sono uguali o maggiori degli elementi di destra corrispondenti e la matrice sul lato sinistro ha gli stessi o più elementi della matrice a destra, 'greater than' restituisce true.
< 'Less than' restituisce true quando il valore di ogni elemento a sinistra è minore del valore dell'elemento a destra corrispondente. 'Minore di' restituisce true anche quando il lato sinistro ha meno elementi rispetto al lato destro.
<= 'Minore o uguale a' restituisce true quando il valore di ogni elemento sul lato sinistro è minore o uguale al valore dell'elemento a destra corrispondente. Se tutti i valori degli elementi sul lato sinistro sono uguali o minori degli elementi a destra corrispondenti e la matrice a sinistra ha gli stessi o meno elementi della matrice a destra, 'greater than' restituisce true.

 

TUTTI quantificatori

Il quantificatore ALL specifica che ogni elemento sul lato sinistro viene confrontato con ogni elemento sul lato destro. Per restituire true, il confronto deve essere true per ogni elemento a sinistra rispetto a ogni elemento a destra. Il numero di elementi nei lati della matrice sinistra e destra non ha alcun effetto sul risultato.

Nella tabella seguente viene illustrato il funzionamento di ogni operatore di confronto con il quantificatore ALL.

Operatore Descrizione
= 'Uguale a' restituisce true quando ogni valore di elemento a sinistra è uguale a ogni valore dell'elemento a destra.
!= o <> 'Not equal to' restituisce true quando almeno uno dei valori dell'elemento a sinistra è diverso da uno qualsiasi dei valori dell'elemento a destra.
> 'Maggiore di' restituisce true quando ogni valore di elemento a sinistra è maggiore di ogni valore dell'elemento a destra.
>= 'Maggiore o uguale a' restituisce true quando ogni valore dell'elemento a sinistra è maggiore o uguale a ogni valore dell'elemento a destra.
< 'Less than' restituisce true quando ogni valore dell'elemento a sinistra è minore di ogni valore dell'elemento a destra.
<= 'Minore o uguale a' restituisce true quando ogni valore di elemento a sinistra è minore o uguale a ogni valore dell'elemento a destra.

 

Quantificatore SOME (o ANY)

Il quantificatore SOME e il quantificatore ANY possono essere utilizzati in modo intercambiabile. Analogamente al quantificatore ALL, il quantificatore SOME specifica che ogni elemento sul lato sinistro viene confrontato con ogni elemento a destra. Per restituire true, il confronto deve essere true per almeno uno degli elementi a sinistra rispetto a qualsiasi elemento a destra. Il numero di elementi a sinistra e a destra non ha alcun effetto sul risultato.

Nella tabella seguente viene illustrato il funzionamento di ogni operatore di confronto con il quantificatore SOME.

Operatore Descrizione
= 'Uguale a' restituisce true quando almeno uno dei valori dell'elemento a sinistra corrisponde a uno dei valori degli elementi a destra.
!= o <> 'Not equal to' restituisce true quando nessuno dei valori dell'elemento a sinistra corrisponde a uno qualsiasi dei valori dell'elemento a destra.
> 'Maggiore di' restituisce true quando almeno uno dei valori dell'elemento a sinistra è maggiore di uno dei valori dell'elemento a destra.
>= 'Maggiore o uguale a' restituisce true quando almeno uno dei valori dell'elemento a sinistra è maggiore o uguale a uno dei valori degli elementi a destra.
< 'Less than' restituisce true quando almeno uno dei valori dell'elemento a sinistra è minore di uno dei valori dell'elemento a destra.
<= 'Minore o uguale a' restituisce true quando almeno uno dei valori dell'elemento a sinistra è minore o uguale a uno qualsiasi dei valori dell'elemento a destra.

 

Esempio

Nell'esempio seguente viene verificato se i documenti si trovano nelle categorie "Finance" o "Planning":

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

Tutti i confronti seguenti restituiscono true. Tenere presente che nell'uso effettivo, la sintassi della query di ricerca richiede che il lato sinistro sia una proprietà, non un valore letterale.

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]

Riferimento

Predicato LIKE

Confronto tra valori letterali

Predicato NULL

Informazioni concettuali

Predicati full-text

Predicati non full-text