Többértékű (tömb) összehasonlítások

A tartalomindexben tárolt oszlopok több értékkel is rendelkezhetnek, és ezeket a többértékű oszlopokat a TÖMB összehasonlító predikátum használatával lehet összehasonlítani.

A TÖMB összehasonlító predikátum szintaxisa a következő:

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

Hiba jelenik meg, ha az oszlophivatkozás nem többértékű oszlop. Az oszlop adattípusának kompatibilisnek kell lennie az összehasonlító lista elemeivel. Szükség esetén az oszlophivatkozás más adattípusként.

Az összehasonlító operátor (comp_op) a normál összehasonlító operátorok bármelyike lehet. Többértékű összehasonlítás esetén az összehasonlító operátorok jelentése kissé eltérő attól függően, hogy használnak-e kvantitálót. A kvantátorok azonosítják, hogy az összehasonlítást az összehasonlító listában szereplő értékek egészével vagy egy részével kell-e összevetni. Az összehasonlító operátorok funkcióit a dokumentum későbbi részében található, az egyes kvantátorok (ALL és SOME) leírását leíró táblák tartalmazzák.

Az operátor utáni érték egyetlen literális értéket határoz meg, amelyet a többértékű oszlop összes elemével összehasonlítunk. Ha bármely elem megfelel az értéknek, a predikátum igaz.

Az összehasonlító lista a többértékű oszlophoz képest összehasonlított literális értékek tömbét adja meg. Az összehasonlító lista szintaxisa a következő:

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

Fontos

Vegye figyelembe az összehasonlító lista szintaxisát. Az összehasonlító listát alkotó literálok csoportját szögletes zárójelekkel kell körülvenni. Ne vegye körül az összehasonlító lista egyes elemeit szögletes zárójelekkel. Ezért a TÖMB [1] és a TÖMB [1,2,3] érvényes, de a TÖMB [1[,2][,3]] nem.

 

Az opcionális kvantitáló határozza meg, hogy a többértékű összehasonlítás igaz vagy hamis értéket ad-e vissza. A következő szakaszok ismertetik az egyes kvantálókat, és azt, hogy az egyes összehasonlító operátorok hogyan működnek a kvantátor használatakor.

Hiányzó kvantáló

Ha nincs megadva kvantáló, az összehasonlítás bal oldalán lévő összes elemet összehasonlítjuk a jobb oldalon található azonos pozícióban lévő elemmel. Az összehasonlítás a tömbök első elemével kezdődik, és végighalad az utolsó elemen. Ha a bal oldalon lévő összes elem megegyezik a jobb oldalon lévő megfelelő elemekkel, a tömbelemek száma határozza meg, hogy melyik tömb nagyobb.

Az alábbi táblázat az összehasonlító operátorok működését mutatja be, ha nincs megadva kvantitáló, és ezek rövid leírását tartalmazza.

Operátor Leírás
= Az "Egyenlő" értéke igaz, ha minden bal oldali elem értéke megegyezik a megfelelő jobb oldali elem értékével, és mindkét tömb ugyanolyan számú elemet tartalmaz.
!= vagy <> A "Nem egyenlő" igaz értéket ad vissza, ha egy vagy több bal oldali elem olyan értékekkel rendelkezik, amelyek eltérnek a megfelelő jobb oldali elemektől, vagy ha a bal és jobb oldali tömbök nem rendelkeznek azonos számú elemmel.
> A "Nagyobb mint" igaz értéket ad vissza, ha az egyes bal oldali elemek értéke nagyobb, mint a megfelelő jobboldali elem értéke. Ha az összes bal oldali elemérték pontosan egyezik a megfelelő jobb oldali elemekkel, és a bal oldali tömb több elemet tartalmaz, mint a jobb oldali tömb, akkor a "nagyobb mint" igaz értéket ad vissza.
>= A "Nagyobb vagy egyenlő" érték akkor igaz, ha minden bal oldali elem értéke nagyobb vagy egyenlő a megfelelő jobboldali elem értékénél. Ha az összes bal oldali elem értéke egyenlő vagy nagyobb, mint a megfelelő jobb oldali elemek, és a bal oldali tömb ugyanolyan vagy több elemből áll, mint a jobb oldali tömb, akkor a "nagyobb, mint" igaz értéket ad vissza.
< A "Kisebb mint" igaz értéket ad vissza, ha az egyes bal oldali elemek értéke kisebb, mint a megfelelő jobboldali elem értéke. A "Kisebb mint" akkor is igaz, ha a bal oldalon kevesebb elem található, mint a jobb oldalon.
<= A "Kisebb vagy egyenlő" érték akkor igaz, ha minden bal oldali elem értéke kisebb vagy egyenlő a megfelelő jobboldali elem értékénél. Ha az összes bal oldali elem értéke egyenlő vagy kisebb, mint a megfelelő jobb oldali elemek, és a bal oldali tömb ugyanolyan vagy kevesebb elemből áll, mint a jobb oldali tömb, akkor a "nagyobb, mint" igaz értéket ad vissza.

 

ALL kvantátor

Az ALL kvantátor azt határozza meg, hogy a bal oldalon lévő elemeket a jobb oldalon lévő összes elemhez hasonlítsa össze a rendszer. Ha igaz értéket szeretne visszaadni, az összehasonlításnak igaznak kell lennie a bal oldalon lévő egyes elemekre a jobb oldalon lévő összes elemhez képest. A bal és jobb oldali tömboldalak elemeinek száma nincs hatással az eredményre.

Az alábbi táblázat bemutatja, hogyan működnek az egyes összehasonlító operátorok az ALL kvantátorsal.

Operátor Leírás
= Az "Egyenlő" igaz értéket ad vissza, ha minden bal oldali elem értéke megegyezik minden jobb oldali elem értékével.
!= vagy <> A "Nem egyenlő" értéke igaz, ha a bal oldali elemértékek legalább egyike eltér a jobb oldali elemértékektől.
> A "Nagyobb mint" igaz értéket ad vissza, ha minden bal oldali elem értéke nagyobb, mint minden jobb oldali elemérték.
>= A "Nagyobb vagy egyenlő" érték igaz értéket ad vissza, ha minden bal oldali elem értéke nagyobb vagy egyenlő minden jobboldali elemértéknél.
< A "Kisebb mint" igaz értéket ad vissza, ha minden bal oldali elem értéke kisebb, mint minden jobb oldali elemérték.
<= A "Kisebb vagy egyenlő" érték igaz értéket ad vissza, ha minden bal oldali elem értéke kisebb vagy egyenlő minden jobboldali elemértéknél.

 

SOME (vagy bármely) kvantáló

A SOME kvantáló és az ANY kvantáló felcserélhető. Az ALL kvantátorhoz hasonlóan a SOME kvantátor is azt határozza meg, hogy a bal oldalon lévő elemeket a jobb oldalon lévő összes elemhez hasonlítsa össze a rendszer. Az igaz érték visszaadásához az összehasonlításnak igaznak kell lennie a bal oldalon lévő elemek legalább egyikére a jobb oldalon lévő bármely elemhez képest. A bal és jobb oldali tömbök elemeinek száma nincs hatással az eredményre.

Az alábbi táblázat bemutatja, hogyan működnek az egyes összehasonlító operátorok a SOME kvantátorsal.

Operátor Leírás
= Az "Egyenlő" érték akkor ad vissza igaz értéket, ha a bal oldali elemértékek legalább egyike megegyezik a jobb oldali elemértékek bármelyikével.
!= vagy <> A "Nem egyenlő" igaz értéket ad vissza, ha a bal oldali elemértékek egyike sem azonos a jobb oldali elemértékekkel.
> A "Nagyobb mint" igaz értéket ad vissza, ha a bal oldali elemértékek közül legalább az egyik nagyobb, mint bármelyik jobb oldali elemérték.
>= A "Nagyobb vagy egyenlő" érték akkor igaz, ha a bal oldali elemértékek legalább egyike nagyobb vagy egyenlő a jobb oldali elemértékek bármelyikével.
< A "Kisebb, mint" akkor ad vissza igaz értéket, ha a bal oldali elemértékek közül legalább az egyik kisebb, mint a jobb oldali elemértékek bármelyike.
<= A "Kisebb vagy egyenlő" érték akkor igaz, ha a bal oldali elemértékek legalább egyike kisebb vagy egyenlő a jobb oldali elemértékek bármelyikével.

 

Példák

Az alábbi példa ellenőrzi, hogy a dokumentumok a "Pénzügy" vagy a "Tervezés" kategóriába tartoznak-e:

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

Az alábbi összehasonlítások mindegyike igaz értéket ad. Ne feledje, hogy a tényleges használat során a keresési lekérdezés szintaxisa megköveteli, hogy a bal oldal tulajdonság legyen, nem pedig konstans érték.

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

LIKE predikátum

literálérték-összehasonlítási

NULL predikátum

fogalmi

Full-Text Predikátumok

nemFull-Text predikátumok