Condizioni

La condizione specifica una combinazione di una o più espressioni e operatori logici (booleani). Nella sintassi delle espressioni OLAP sono disponibili i tipi di condizioni riportati di seguito.

Condizioni di confronto semplice

Le condizioni di confronto confrontano un'espressione con un'altra espressione. Il risultato del confronto può essere TRUE, FALSE o NULL.

È possibile utilizzare gli operatori di confronto seguenti:

Operatori del confronto semplice
Operatore
Descrizione
>
Maggiore di
>=
Maggiore o uguale a
<
Minore di
<=
Minore o uguale a
=
Uguale a

!=
^=

Diverso da
<>
Maggiore o minore di

Sintassi

expr { > | >= | < | <= | = | != | ^= | <> } expr 

Argomenti

expr può essere un'espressione qualsiasi.

Esempi

5 > 3 è una condizione vera (True), 4 != 5 è vera (True) e 6 >= 9 è falsa (False).

Condizioni di confronto di gruppo

Una condizione di confronto di gruppo specifica un confronto con uno qualsiasi o tutti i membri di una lista o di una subquery.

È possibile utilizzare gli operatori di confronto seguenti:

Operatori del confronto di gruppo
Operatore
Descrizione
>
Maggiore di
>=
Maggiore o uguale a
<
Minore di
<=
Minore o uguale a
=
Uguale a

!=
^=

Diverso da
<>
Maggiore o minore di

ANY
SOME

Restituisce True se uno o più valori della lista corrispondono oppure False se nessun valore corrisponde.
ALL
Restituisce True se tutti i valori della lista corrispondono oppure False se uno o più valori non corrispondono.

Sintassi

expr
     { = | != | ^= | <> | > | < | >= | <= }
     { ANY | SOME | ALL }
     ({ expression_list | subquery })


Esempi

5 >= ALL (5, 10, 15) è una condizione vera (True) e 5 <> ANY (5, 10, 15) è vera (True).

(color, size) = SOME (('RED', 'L'), ('GREEN', 'M')) restituisce True per gli elementi grandi di colore rosso e gli elementi medi di colore verde.

Condizioni di intervallo

L'operatore BETWEEN verifica se un valore rientra in un intervallo specifico di valori. Restituisce True se il valore verificato è maggiore o uguale a un valore minimo e inferiore o uguale a un valore massimo.

Sintassi

expr [ NOT ] BETWEEN expr AND expr

Esempio

7 NOT BETWEEN 10 AND 15 è una condizione vera (True).

Condizioni multiple

Le congiunzioni confrontano una singola espressione con due condizioni.

Congiunzioni
Operatore
Descrizione
AND
Restituisce TRUE se entrambe le condizioni sono VERE. Restituisce FALSE se una delle due condizioni è FALSA. Negli altri casi restituisce UNKNOWN.
OR
Restituisce TRUE se una delle due condizioni è VERA. Restituisce FALSE se entrambe le condizioni sono FALSE. Negli altri casi restituisce UNKNOWN.

Sintassi

expr operator condition1 { AND | OR } condition2 

Esempio

5 < 7 AND 5 > 3 è una condizione vera (True); 5 < 3 OR 10 < 15 è vera.

Negazione

L'operatore NOT inverte il significato di una condizione. Restituisce TRUE se la condizione è FALSA e FALSE se la condizione è VERA. La condizione UNKNOWN (sconosciuta), rimane UNKNOWN.

Sintassi

NOT {BETWEEN | IN | LIKE | NULL }

Esempio

5 IS NOT NULL è una condizione vera (True), mentre 5 NOT IN (5, 10, 15) è una condizione falsa (False).

Condizioni speciali

L'operatore IS verifica le condizioni speciali, quali ad esempio i valori nulli, l'infinito e i valori che non sono numeri.

Operatori delle condizioni speciali
Operatore Descrizione
IS INFINITE Restituisce TRUE se l'espressione è infinita, altrimenti restituisce FALSE.
IS NAN Restituisce TRUE se l'espressione non è un numero, altrimenti restituisce FALSE.
IS NULL Restituisce TRUE se l'espressione è nulla, altrimenti restituisce FALSE.

Sintassi

expr IS [ NOT ] NULL

Esempio

13 IS NOT NULL è una condizione vera (True).

Condizioni di corrispondenza dei pattern

Le condizioni di corrispondenza dei pattern confrontano i dati dei caratteri. A questa categoria appartengono due gruppi di operatori: LIKE e REGEXP_LIKE.

Operatori LIKE

Gli operatori LIKE specificano un test che implica la corrispondenza dei pattern. Mentre l'operatore Uguale a (=) rileva le corrispondenze esatte di un valore di carattere con un altro, gli operatori LIKE sono in grado di rilevare le corrispondenze dei pattern definiti mediante caratteri speciali ("caratteri jolly").

È possibile scegliere gli operatori LIKE riportati di seguito.

Operatori LIKE di corrispondenza dei pattern
Operatore Descrizione
LIKE 

Utilizza i carattere del set di caratteri di input.

LIKEC Utilizza i caratteri completi Unicode e tratta un carattere Unicode supplementare come due caratteri.
LIKE2 Utilizza i punti di codice UCS2 e tratta un carattere Unicode supplementare come carattere singolo.
LIKE4 Utilizza i punti di codice UCS4 e tratta un carattere composto come carattere singolo.

Sintassi

char1 [ NOT ] ( LIKE | LIKEC | LIKE2 | LIKE4 )
  char2 [ ESCAPE esc_char ]

Argomenti

char1 è un'espressione di testo per il valore della ricerca.

char2 è un'espressione di testo per il pattern. Il pattern può contenere i caratteri jolly descritti di seguito.

esc_char è un'espressione di testo, in genere un valore, di lunghezza pari a un carattere. Il carattere di escape identifica un carattere di sottolineatura o un segno di percentuale presenti nel pattern come caratteri normali e non come caratteri jolly. È inoltre possibile cercare il carattere di escape ripetendolo. Ad esempio, se il carattere di escape è @, è possibile utilizzare @% per cercare % e @@ per cercare @.

Esempi

'Ducks' LIKE 'Duck_' e 'Ducky' LIKE 'Duck_' sono condizioni vere (True).

'Duckling' LIKE 'Duck_' è una condizione falsa (False).

'Duckling' LIKE 'Duck%' è una condizione vera (True).

Operatore REGEXP_LIKE

L'operatore REGEXP_LIKE esegue la corrispondenza di espressioni regolari invece della semplice corrispondenza dei pattern eseguita dall'operatore LIKE. Questo operatore valuta le stringhe utilizzando i caratteri definiti dal set di caratteri di input.

Le espressioni regolari Oracle sono conformi allo standard delle espressioni regolari POSIX (Portable Operating System Interface) IEEE e alle istruzioni Unicode Regular Expression Guidelines di Unicode Consortium. Per ulteriori informazioni sulle espressioni regolari, consultare Oracle Database SQL Reference.

Sintassi

REGEXP_LIKE(source_char, pattern
            [, match_parameter ]
           )

Argomenti

source_char è l'espressione per la quale verrà eseguita la ricerca. Può essere uno qualsiasi dei tipi di dati CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB e NCLOB.

pattern è l'espressione da ricercare. Si tratta in genere di un valore di testo e può essere uno qualsiasi dei tipi di dati CHAR, VARCHAR2, NCHAR e NVARCHAR2. Può contenere fino a 512 byte.

match_parameter è un valore di testo che consente di modificare il funzionamento predefinito della funzione in relazione alle corrispondenze restituite. È possibile specificare uno o più valori tra quelli indicati di seguito.

Esempio

REGEXP_LIKE (first_name, '^Ste(v|ph)en$') trova le corrispondenze di Steven e Stephen, ma non di Stevens o Esteven, in first_name.