Questa sezione descrive gli operatori di confronto complessi di ESQL (predicati). Per informazioni relative agli operatori di confronto semplici di ESQL, consultare Operatori di confronto semplici ESQL.
Questo operatore esiste in due formati, SYMMETRIC e ASYMMETRIC (valore predefinito se il formato non è specificato). Il formato SYMMETRIC è equivalente a:
(source >= boundary1 AND source <= boundary2) OR (source >= boundary2 AND source <= boundary1)
Il formato ASYMMETRIC è equivalente a:
source >= boundary1 AND source <= boundary2
Il formato ASYMMETRIC è più semplice, ma restituisce solo il risultato previsto quando il primo valore limite ha un valore inferiore rispetto al secondo limite. E' utile solo quando le espressioni di condizione limite sono letterali.
Se gli operandi sono di tipi differenti, vengono applicate delle regole speciali. Tali regole sono descritte in Assegnazioni implicite.
EXISTS(SELECT * FROM something WHERE predicate)
Il risultato è TRUE se l'operando di sinistra non è NULL ed è uguale ad uno degli operandi di destra. Il risultato è FALSE se l'operando di sinistra non è NULL e non è uguale a nessuno degli operandi di destra, nessuno dei quali ha valori NULL. In caso contrario, il risultato è UNKNOWN. Se gli operandi sono di tipi differenti, vengono applicate delle regole speciali. Tali regole sono descritte in Assegnazioni implicite.
Lo scopo principale dell'operatore IS è quello di verificare se un valore è NULL. L'operatore di confronto (=) non consente questa operazione perché il risultato del confronto tra qualsiasi elemento e NULL è NULL.
L'operatore IS consente di verificare i valori booleani TRUE e FALSE e la verifica di valori decimali per valori speciali. Tali valori sono indicati da INF, +INF, -INF, NAN (non un numero) e NUM (un numero valido) con qualsiasi tipo di caratteri maiuscoli e minuscoli. Sono accettati anche i formati alternativi +INFINITY, -INFINITY e NUMBER.
Se applicato a tipi non numerici, il risultato è FALSE.
Il risultato è TRUE se nessuno degli operandi è NULL e se l'operando source corrisponde all'operando modello. Il risultato è FALSE se nessuno degli operandi è NULL e l'operando source non corrisponde all'operando modello. In caso contrario, il risultato è UNKNOWN.
Il modello è specificato da una stringa in cui i caratteri percentuale (%) e di sottolineatura (_) hanno un significato speciale:
Body.Trade.Company LIKE 'I__'
Body.Trade.Company LIKE 'I%'
Per utilizzare i caratteri percentuale e di sottolineatura all'interno delle espressioni, inserire prima dei caratteri un carattere ESCAPE, che per impostazione predefinita viene convertito nel carattere barra retroversa (\).
Ad esempio, il seguente predicato individua una corrispondenza di IBM_Corp.
Body.Trade.Company LIKE 'IBM\_Corp'
E' possibile specificare un carattere escape differente utilizzando la clausola ESCAPE. Ad esempio, è possibile specificare l'esempio precedente nel modo riportato di seguito:
Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'