Vergelijkingen met meerdere waarden (matrix)

Kolommen die zijn opgeslagen in de inhoudsindex kunnen meerdere waarden hebben en die kolommen met meerdere waarden kunnen worden vergeleken met behulp van het predicaat MATRIXvergelijking.

Het predicaat MATRIX-vergelijking heeft de volgende syntaxis:

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

Er wordt een fout geretourneerd als de kolomreferentie geen kolom met meerdere waarden is. Het gegevenstype kolom moet compatibel zijn met de elementen van de vergelijkingslijst. Indien nodig kan de kolomreferentie worden cast- als een ander gegevenstype.

De vergelijkingsoperator (comp_op) kan een van de normale vergelijkingsoperatoren zijn. In een vergelijking met meerdere waarden hebben de vergelijkingsoperatoren iets andere betekenissen, afhankelijk van of een kwantificator wordt gebruikt. Kwantificatoren bepalen of een vergelijking moet worden gemaakt op basis van alle of sommige waarden in de vergelijkingslijst. De functies van de vergelijkingsoperatoren worden gegeven in de tabellen waarin elke kwantificator (ALL en SOME) verderop in dit document wordt beschreven.

De waarde na de operator geeft één letterlijke waarde op die wordt vergeleken met alle elementen van de kolom met meerdere waarden. Als een element overeenkomt met de waarde, is het predicaat waar.

In de vergelijkingslijst wordt een matrix met letterlijke waarden opgegeven die worden vergeleken met de kolom met meerdere waarden. De syntaxis voor de vergelijkingslijst volgt:

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

Belangrijk

Let op de syntaxis van de vergelijkingslijst. De groep letterlijke waarden waaruit de vergelijkingslijst bestaat, moet tussen vierkante haken staan. Plaats afzonderlijke elementen van de vergelijkingslijst niet tussen vierkante haken. Daarom zijn MATRIX [1] en MATRIX [1,2,3] geldig, maar MATRIX [1[,2][,3]] niet.

 

De methode die wordt gebruikt om te bepalen of de vergelijking met meerdere waarden waar of onwaar retourneert, wordt opgegeven door de optionele kwantificator. In de volgende secties wordt elke kwantificeerder beschreven en hoe elke vergelijkingsoperator werkt wanneer de kwantificator wordt gebruikt.

Afwezige kwantificator

Als er geen kwantificator is opgegeven, wordt elk element aan de linkerkant van de vergelijking vergeleken met het element in dezelfde positie aan de rechterkant. De vergelijking begint met het eerste element in de matrices en doorloopt het laatste element. Als alle elementen aan de linkerkant gelijk zijn aan de bijbehorende elementen aan de rechterkant, wordt het aantal matrixelementen gebruikt om te bepalen welke matrix groter is.

In de volgende tabel ziet u de werking van de vergelijkingsoperatoren wanneer er geen kwantificator is opgegeven en geeft u een korte beschrijving van elke operator.

Bediener Beschrijving
= 'Gelijk aan' retourneert waar wanneer elk element aan de linkerkant dezelfde waarde heeft als het bijbehorende element aan de rechterkant en beide matrices hetzelfde aantal elementen hebben.
!= of <> 'Niet gelijk aan' retourneert waar wanneer een of meer elementen aan de linkerkant waarden hebben die verschillen van de bijbehorende elementen aan de rechterkant of wanneer de matrices aan de linkerkant en rechts niet hetzelfde aantal elementen hebben.
> 'Groter dan' retourneert waar wanneer de waarde van elk element aan de linkerkant groter is dan de waarde van het bijbehorende element aan de rechterkant. Als alle waarden aan de linkerkant exact overeenkomen met de bijbehorende elementen aan de rechterkant en de matrix aan de linkerkant meer elementen heeft dan de rechtermatrix, retourneert 'groter dan' waar.
>= 'Groter dan of gelijk aan' retourneert waar wanneer de waarde van elk element aan de linkerkant groter is dan of gelijk is aan de waarde van het bijbehorende element aan de rechterkant. Als alle waarden aan de linkerkant gelijk zijn aan of groter zijn dan de bijbehorende elementen aan de rechterkant en de matrix aan de linkerkant dezelfde of meer elementen heeft dan de rechtermatrix, retourneert 'groter dan' waar.
< 'Kleiner dan' retourneert waar wanneer de waarde van elk element aan de linkerkant kleiner is dan de waarde van het bijbehorende element aan de rechterkant. 'Kleiner dan' retourneert ook waar wanneer de linkerkant minder elementen heeft dan de rechterkant.
<= 'Kleiner dan of gelijk aan' retourneert waar wanneer de waarde van elk element aan de linkerkant kleiner is dan of gelijk is aan de waarde van het bijbehorende element aan de rechterkant. Als alle waarden aan de linkerkant gelijk zijn aan of kleiner zijn dan de bijbehorende elementen aan de rechterkant en de matrix aan de linkerkant dezelfde of minder elementen heeft dan de rechtermatrix, retourneert 'groter dan' waar.

 

ALL quantifier

De ALL-kwantificator geeft aan dat elk element aan de linkerkant wordt vergeleken met elk element aan de rechterkant. Als u waar wilt retourneren, moet de vergelijking waar zijn voor elk element aan de linkerkant in vergelijking met elk element aan de rechterkant. Het aantal elementen aan de linker- en rechtermatrixzijde heeft geen effect op het resultaat.

In de volgende tabel ziet u hoe elke vergelijkingsoperator werkt met de ALL-kwantificator.

Bediener Beschrijving
= 'Gelijk aan' retourneert true wanneer elke waarde aan de linkerkant hetzelfde is als elke waarde aan de rechterkant van het element.
!= of <> 'Niet gelijk aan' retourneert waar wanneer ten minste één van de waarden aan de linkerkant verschilt van een van de waarden aan de rechterkant van het element.
> 'Groter dan' retourneert waar wanneer elke waarde aan de linkerkant groter is dan elke waarde aan de rechterkant van het element.
>= 'Groter dan of gelijk aan' retourneert true wanneer elke waarde aan de linkerkant groter is dan of gelijk is aan elke waarde aan de rechterkant.
< 'Kleiner dan' retourneert waar wanneer elke waarde aan de linkerkant kleiner is dan elke waarde aan de rechterkant van het element.
<= 'Kleiner dan of gelijk aan' retourneert true wanneer elke waarde aan de linkerkant kleiner is dan of gelijk is aan elke elementwaarde aan de rechterkant.

 

SOMMIGE (of een) kwantificator

De SOME-kwantificator en de ANY-kwantificator kunnen door elkaar worden gebruikt. Net als de ALL-kwantificator geeft de SOME-kwantificator aan dat elk element aan de linkerkant wordt vergeleken met elk element aan de rechterkant. Als u waar wilt retourneren, moet de vergelijking waar zijn voor ten minste één van de elementen aan de linkerkant in vergelijking met een element aan de rechterkant. Het aantal elementen aan de linker- en rechterkantmatrices heeft geen effect op het resultaat.

In de volgende tabel ziet u hoe elke vergelijkingsoperator werkt met de KWantificator SOME.

Bediener Beschrijving
= 'Gelijk aan' retourneert waar wanneer ten minste één van de waarden aan de linkerkant hetzelfde is als een van de elementen aan de rechterkant.
!= of <> 'Niet gelijk aan' retourneert true wanneer geen van de waarden van het element aan de linkerkant hetzelfde is als een van de waarden aan de rechterkant van het element.
> 'Groter dan' retourneert waar wanneer ten minste één van de waarden aan de linkerkant groter is dan een van de waarden aan de rechterkant van het element.
>= 'Groter dan of gelijk aan' retourneert waar wanneer ten minste één van de waarden aan de linkerkant groter is dan of gelijk is aan een van de waarden aan de rechterkant van het element.
< 'Kleiner dan' retourneert waar wanneer ten minste één van de waarden aan de linkerkant kleiner is dan een van de elementen aan de rechterkant.
<= 'Kleiner dan of gelijk aan' retourneert true wanneer ten minste één van de waarden aan de linkerkant kleiner is dan of gelijk is aan een van de waarden aan de rechterkant van het element.

 

Voorbeelden

In het volgende voorbeeld wordt gecontroleerd of documenten zich in de categorieën Financiën of Planning bevinden:

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

In de volgende vergelijkingen wordt waar geëvalueerd. Houd er rekening mee dat bij daadwerkelijk gebruik de syntaxis van de zoekquery vereist dat de linkerzijde een eigenschap is, niet een letterlijke waarde.

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]

PREdicaat LIKE

vergelijking van letterlijke waarden

predicaat NULL-predicaat

conceptuele

Full-Text predicaten

Niet-Full-Text Predicaten