Operatori di confronto complessi ESQL

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.

Operatore BETWEEN
L'operatore BETWEEN consente di verificare se un valore è compreso tra DUE VALORI LIMITE.

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.

Operatore EXISTS
L'operatore EXISTS restituisce un valore booleano che indica se una funzione SELECT ha restituito uno o più valori (TRUE) o nessuno (FALSE).
EXISTS(SELECT * FROM something WHERE predicate)
Operatore IN
L'operatore IN consente di verificare se un valore è uguale ad un valore IN UN ELENCO.

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.

Operatore IS
L'operatore IS consente di verificare se un'espressione ha restituito un VALORE SPECIALE.

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.

Operatore LIKE
L'operatore LIKE ricerca stringhe che corrispondono ad un determinato MODELLO.

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:

  • Il carattere di sottolineatura _ corrisponde a qualsiasi carattere singolo.
    Ad esempio, la seguente stringa ricerca le corrispondenze di IBM e IGI, ma non International Business Machines oppure IBM Corp:
    Body.Trade.Company LIKE 'I__'
  • Il carattere percentuale % corrisponde ad una stringa di zero o più caratteri.
    Ad esempio, la seguente stringa ricerca le corrispondenze di IBM, IGI, International Business Machines e IBM Corp:
    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 '$'
Operatore SINGULAR
L'operatore SINGULAR restituisce un valore booleano TRUE se l'elenco contiene esattamente un elemento; in caso contrario, restituisce FALSE.
Concetti correlati
Panoramica dei flussi di messaggi
Panoramica delle mappature di messaggi
Attività correlate
Sviluppo di flussi di messaggi
Sviluppo di ESQL
Riferimenti correlati
Operatori di confronto semplici ESQL
Nodi integrati
Riferimento ESQL
Confronti tra ROW e LIST
Assegnazioni implicite
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak01045_