Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Funzioni e Operatori > Operatori di confronto
PrecedenteFunzioni e OperatoriFunzioni e operatori matematiciSuccessivo

9.2. Operatori di confronto

Sono disponibili gli usuali operatori di confronto, visualizzati nella tabella Tabella 9.1, «Operatori di confronto».

Tabella 9.1. Operatori di confronto

OperatoreDescrizione
< minore di
> maggiore di
<= minore di o uguale a
>= maggiore di o uguale a
= uguale
<> o != diverso

[Nota]

Nota

L'operatore != viene convertito in <> durante l'analisi. Non è possibile implementare gli operatori != e <> per fargli fare cose diverse.

Gli operatori di confronto sono disponibili per tutti i tipi di dato per i quali il loro utilizzo ha senso. Tutti gli operatori di confronto sono operatori binari che restituiscono un valore di tipo boolean; una espressione tipo 1 < 2 < 3 non è valida (in quanto non c'è un operatore < per confrontare un valore boolean con 3).

In aggiunta agli operatori di confronto, è disponibile il costrutto speciale BETWEEN:

    a BETWEEN x 
    AND y

è equivalente a

    a >= x 
    AND a <= y

Notare che BETWEEN tratta i valori i punti finali come inclusi nell'intervallo. NOT BETWEEN fa il confronto opposto:

    a NOT BETWEEN x 
    AND y

è equivalente a

    a < x 
    OR a > y

è lo stesso di BETWEEN ad eccezione che non richiede che l'argomento a sinistra di AND sia minore o uguale all'argomento di destra. Se non lo è, questi due argomenti vengono scambiati automaticamente, così che un intervallo non vuoto è sempre implicito.

Per controllare se un valore è null o non null, utilizzare il costrutto

espressione IS NULL
espressione IS NOT NULL

oppure il costrutto equivalente, ma non standard

espressione ISNULL
espressione NOTNULL

Fare attenzione a non scrivere espressione = NULL in quanto NULL non è «uguale a» NULL. (Il valore null rappresenta un valore sconosciuto e non si può sapere quando due valori sconosciuti sono uguali). Questo comportamento è conforme allo standard SQL.

[Suggerimento]

Suggerimento

Alcune applicazioni possono aspettarsi che espressione = NULL restituisca true se espressione calcola un valore null. È raccomandato che queste applicazioni vengano modificate per aderire allo standard SQL. Tuttavia, se ciò non può essere fatto, si può utilizzare la variabile di configurazione transform_null_equals. Se essa viene abilitata, PostgreSQL™ convertirà la clausola x = NULL nel formato x IS NULL. Questo era il comportamento predefinito nelle versioni di PostgreSQL™ dalla 6.5 fino alla 7.1.

[Nota]

Nota

Se l'espressione viene valutata per riga, allora IS NULL è true quando la stessa espressione di riga è null o quando tutti i campi delle riga sono null, mentre IS NOT NULL è true quando la stessa espressione di riga è non-null e tutti i campi della riga sono non-null. Dato questo comportamento, IS NULL e IS NOT NULL non ritorna sempre risultati inversi per espressioni che contengono valori sia NULL che non-null restituirà false per tutti e due i test. Questa definizione è conforme allo standard SQL, ed è una modifica rispetto al comportamento incoerente tenuto da PostgreSQL™ nelle versioni precedenti alla 8.2.

Gli operatori di confronto ordinari restituiscono null (che significa «sconosciuto») quando entrambi gli input sono null. Per esempio, 7 = NULL produce null. Quando questo comportamento non è adatto, usare i costrutti IS [ NOT ] DISTINCT FROM:

expression IS DISTINCT FROM expression
expression IS NOT DISTINCT FROM expression

Per input non-null, IS DISTINCT FROM è identico all'operatore <>. Tuttavia, quando ambedue gli input sono null esso restituirà false, e se solo un input è null esso restituirà true. In maniera simile, per input non-null IS NOT DISTINCT FROM è identico a =, ma esso restituirà true quando ambedue gli input sono null e false quando solo un input è null. Quindi, questi costrutti si comportano effettivamente come se null fosse un normale valore di dato, piuttosto che un valore «sconosciuto».

I valori booleani possono anche essere esaminati usando i costrutti

expression IS TRUE
expression IS NOT TRUE
expression IS FALSE
expression IS NOT FALSE
expression IS UNKNOWN
expression IS NOT UNKNOWN

Questi restituiranno sempre true o false, mai un valore null, anche quando l'operando è null. Un input null viene trattato con il valore logico «unknown». Notare che IS UNKNOWN e IS NOT UNKNOWN sono effettivamente uguali, rispettivamente, a IS NULL e IS NOT NULL, eccetto che l'espressione in input deve essere di tipo booleano.

Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Funzioni e Operatori > Operatori di confronto
PrecedenteFunzioni e OperatoriFunzioni e operatori matematiciSuccessivo