Zatímco v přehledech slouží srovnávací operátory pro filtrování potřebných dat pomocí jednotlivých výrazů případně řazených do větších, logických celků, v akcích většinou slouží buď pro dodatečné filtrování zdrojových dat nebo pro řízení logiky akcí. XPath a nabízené operátory pak vedle akcí slouží ještě také k přepočtu hodnot vracených z databáze.
Specifické operátory
Následující sada má více odlišností v závislosti na použití buď v tabulkách nebo v akcích a zatímco běžné operátory jsou dostupné v obojím a až na mírné odlišnosti více méně fungují stejně jak v akcích tak tabulkách, následující sada je výrazně specifičtější:
Pokud je nějaký operátor uveden pro akce, je možné jej většinou použít i v rámci dopočítávaných hodnot nad daty vracenými v tabulce z SQL databáze či akční tabulky.
Nyní se podíváme na specifika jednotlivých operátorů.
Běžné operátory
První sada operátorů, nazývaných jako běžné, je k dispozici jak v tabulkách tak také akcích (a úpravách hodnot nad tabulkami) nabízí základní sadu pro porovnání jak hodnot textových, tak také číselných a logických.
Případná specifika chování se pak řídí specifikami dle specifik buď SQL (tabulky) nebo XPath (akce a úpravy hodnot). Například výraz s operátorem = (rovná se), kde na levé straně i pravé straně je řetězec, tedy sada znaků textu, funguje v obou prostředích stejně (pokud na obou stranách jsou texty). Pokud hodnota na jedné straně chybí (není zadána) pak už se obě prostředí mírně odlišují, například prázdný řetězec se nebude rovnat neuvedenému výrazu (null) v databázi, ale může se za jistých okolností rovnat neuvedené hodnotě, chybějcícímu uzlu v XPath a pod.
Stejně tak například operátory > (věší než) a < (menší než) se mohou mírně odlišovat při srovnávání řetězců nebo při porovnávání čísla a řetězce, kdy dochází ke snaze o převod hodnoty na číslo či z čísla na řetězec.
Obecně pro běžné operátory platí, že fungují dobře a transparentně, pokud máme jednak zajištěnu existenci hodnot na obou stranách a také typ těchto hodnot na obou stranách. Ve většině ostatních případů se pak chovají dle obecných zvyklostí.
Pro běžné operátory také platí, že se při jejich využití pracuje s celou hodnotou na obou stranách.
Operátory jako, obsahuje, začíná s...
Operátor
jako je operátor databázový, který aplikuje SQL operátor LIKE dle pravidel databáze (viz. např.
zde). Zejména pak je využíván například v hledáčcích, kdy můžeme ve spojení s tzv. dodatečným zadáním používat buď výchozí nastavení např.
který najde jak pana Novák, tak také paní Novákovou s tím, že při dodatečném zadání se do dotazu zástupný znak % (procenta) doplňuje obslužným skriptem automaticky.
Tento příklad funguje vlastně stejně, jako operátor začíná s, která pro akce a úpravy hodnot může zajistit vyhledání či ověření faktu, že určitý řetězec, jako třeba "Nováková" začíná s hodnotou "Novák".
Je třeba však dát pozor na některá specifika, jako například
citlivost na malé a velké znaky, kdy v rámci XML standardu a tedy i
XPath je pevně dána citlivost na malé / velké znaky, takže "Nováková"
NEzačíná řetězcem "novák", ale řetězcem znaků "Novák". Oproti tomu,
většina databází je case IN sensitive, tedy velikost znaků nerozlišuje,
ale především je to dáno nastavením té, které databáze. Pro je ale možné
toto chování v rámci jednoho výrazu ve Flexideo tabulkách upravit.
Obdobně se chová operátor
obsahuje (contains), který je opět citlivý na velikost znaků, ale jinak plní v akcích a úpravách hodnot obdobně jako tabulkový výraz
Zjišťuje
tedy, zda řetězec znaků na levé straně obsahuje řetězec znaků na straně
pravé. Na úrovni databáze takto fungují (ne příliš efektivně) výrazy
pro tzv. fulltextové vyhledávání.
Operátory je - není (zadáno)
Výrazy je (zadáno) a není (zadáno) na úrovní SQL databáze jsou vlastně logickou negací IS (NOT) NULL, tedy
V
prostředí akcí jsou tyto operátory převáděny na kontrolu existence
uzlů, tedy se ptáme, zda určitý atribut či element ve zdroji dat
existuje (je) či nikoli (není), tedy:
Často bývá, že zdrojem dat pro určitou část akce jsou tabulková data,
kde například u některých záznamů chybí data (tj. např. datum
narození). Tuto skutečnost jsme stejným operátorem je či není
schopni v akcích ověřovat stejně, jako toho jsme schopni v databázi.
Tedy můžeme například v tabulce chtít jen záznamy, kde platí že datum narození je zadáno.
A pokud to neuděláme v tabulce (přičemž pokud to dává jen trochu smysl,
je lépe dělat takovou filtraci již přímo v tabulce, protože pak není třeba pracovat s větším objemem dat), pokud tedy máme v
akci tabulková data s datem narození i bez něj, tak jsme schopni stejně
zadaným výrazem provést identickou filtraci zdroje až dodatečně v akci.
Operátory je údaj - není údaj
Naproti tomu operátory je údaj a není údaj jsou použitelné jen v rámci akcí a úprav hodnot. Na rozdíl od prostého je / není zadáno jde o kombinovaný test. Takže operátor je údaj testuje nejen existenci uzlu, ale také to, zda textový obsah tohoto uzlu obsahuje hodnotu a operátor není údaj
naproti tomu vylučuje existenci hodnoty bez ohledu na to, zda uzel
existuje či nikoli. Tohoto výsledku je dosahováno kombinovaným XPath
výrazem (na rozdíl od prostého je / není
zadáno), ale jeho využitelnost je výrazně komfortnější a spolehlivější,
jelikož se výsledek takového výrazu soustředí na to zda máme či nemáme
hodnotu bez ohledu na "technikálii" existence uzlu.
Co ale znamená ÚDAJ?
U různých datových typů se za existenci údaje považuje:
Data a časy se chovají stejně jako řetězce, je-li tedy datum, např. 1.1.1900, jde o výskyt údaje
Operátory je ve - není ve
Zde jde opět čistě SQL výraz, který implementuje množinový srovnávací výraz IN (...), příp. NOT IN (...), přičemž uvnitř závorek se má vyskytovat množina hodnot (minimálně alespoň 1) a na levé straně výrazu pak jedna hodnota určitého datového typu, jejíž výskyt v množině se testuje.
V akcích takovýto množinový výraz k dispozici není, ale je možné jej nahradit custom šablonou.
Operátory je ano, je ne, není ano
Tyto operátory jsou, podobně jako operátory pro testování údaje, realizovány kombinací možností XPath, jen s tím rozdílem, že se zaměřují na logické hodnoty. Je tedy možné je použít pouze v akcích. Předností jejich využití je schopnost v různých datových zdrojích, kdy někde je za logické ano považováno klíčové slovo true jinde je za logické ano dosazena číslice 1 nebo totéž pro logické ne je schopnost abstrahovat od konkrétní reprezentace logického ano a logického ne.
Explicitně jsou testovány testovány na výskyt je ano a je ne, je testováno chybějící není ano, ale není k dispozici explicitní test na není ne.