Vai al contenuto

Gruppo Condizioni

Abstract

Questo gruppo contiene funzioni per gestire controlli condizionali nelle espressioni.


CASE

Valuta un'espressione e restituisce un risultato diverso, sia esso vero o falso. Puoi testare più condizioni

Sintassi:

CASE
WHEN condizione THEN risultato
[ ...n ]
[ ELSE risultato ]
END

[ ] indica componenti opzionali

Argomenti:

  • WHEN condizione - L'espressione di condizione da valutare.
  • THEN risultato - Se condizione valutata a True (vero) allora risultato viene valutato e restituito.
  • ELSE risultato - Se nessuna delle condizioni valutate sopra restituisce True (vero) allora risultato viene valutato e restituito.

Esempi:

CASE
WHEN "column" IS NULL THEN 'None'
END
CASE 
WHEN  "COD_REG" =19 or  "COD_REG"  = 20
THEN  "DEN_REG" 
ELSE 'NON SONO ISOLE' 
END

CASE 
WHEN   length( "DEN_REG") >15  THEN 'LUNGO'
WHEN   length( "DEN_REG") <15   AND length( "DEN_REG") >10 THEN 'MEDIO'
ELSE 'CORTA' 
END

Altri Esempi:

popolare un campo un funzione di un altro

CASE 
WHEN "livello3" ILIKE 'A%' THEN 'ciao'
WHEN "livello3" ILIKE 'B%' THEN 'arrivederci'
WHEN "livello3" ILIKE 'C%' THEN 'ciaone'
ELSE 'CUCU'
END

In questo Esempio viene popolato un campo (dove è usata l'espressione) in funzione del campo livello3: se il campo contiene un valore che inizia per A allora scriverà ciao, se contiene un valore che inizia con B scriverà arrivederci; se contiene un valore che inizia per C scriverà ciaone in tutti gli altri casi scriverà CUCU

--

posizionamento etichetta


coalesce

Restituisce il primo valore non NULL dalla lista delle espressioni. Questa funzione può usare qualsiasi numero di Argomenti:.

Sintassi:

  • coalesce(expression1, expression2, )

Argomenti:

  • expression qualsiasi valore o espressione valida, senza tener conto del tipo.

Esempi:

coalesce(NULL, 2) → 2
coalesce(NULL, 2, 3) → 2
coalesce(7, NULL, 3*2) → 7
coalesce("fieldA", "fallbackField", 'ERRORE') → valore di "fieldA" se non è NULL, altrimenti il valore di "fallbackField" o la stringa 'ERRORE' se sono entrambi NULL

Osservazioni:

Questa funzione è utile all'interno di una espressione che prevede l'uso di più campi ed uno o più di essi ha valore NULL, questo valore penalizza l'intera stringa e rende non visibile il risultato.

Esempio senza l'uso della funzione coalesce:

Esempio con l'uso della funzione coalesce:


if

Testa una condizione e restituisce un risultato diverso a seconda della verifica.

Sintassi:

  • if(condition, result_when_true, result_when_false)

Argomenti:

  • condition la condizione che deve essere controllata
  • result_when_true il risultato che viene restituito quando la condizione è vera o un altro valore non si trasforma in falso.
  • result_when_false il risultato che viene restituito quando la condizione è falsa o un altro valore si trasforma in falso come 0 o ''. NULL sarà inoltre convertito in falso.

Esempi:

if( 1+1=2, 'Sì', 'No' ) → 'Sì'
if( 1+1=3, 'Sì', 'No' ) → 'No'
if( 5 > 3, 1, 0) → 1
if( '', 'It is true (not empty)', 'It is false (empty)' ) → 'It is false (empty)'
if( ' ', 'It is true (not empty)', 'It is false (empty)' ) → 'It is true (not empty)'
if( 0, 'One', 'Zero' ) → 'Zero'
if( 10, 'One', 'Zero' ) → 'One'

Osservazioni:

--


nullif

Restituisce un valore nullo se value1 è uguale a value2; altrimenti restituisce value1. Questo può essere usato per sostituire in modo condizionale i valori con NULL.

Sintassi:

  • nullif(value1,value2)

Argomenti:

  • value1 Il valore che dovrebbe essere utilizzato o sostituito con NULL.
  • value2 Il valore di controllo che attiverà la sostituzione NULL.

Esempi:

nullif('(none)', '(none)') → NULL
nullif('text', '(none)') → 'text'
nullif("name", '') → NULL, se "name" è una stringa vuota (o già NULL), "name" in qualsiasi altro caso.


regexp_match

Restituisce la prima posizione di corrispondenza che soddisfa un'espressione regolare all'interno di una stringa, o 0 se la sottostringa non viene trovata.

Sintassi:

  • regexp_match(input_string, regex)

Argomenti:

  • _input_string_ la stringa da confrontare con l'espressione regolare
  • _regex_ L'espressione regolare da confrontare. I caratteri backslash devono essere doppiamente escaped (es "\s" per selezionare un carattere spazio bianco).

Esempi:

regexp_match('QGIS ROCKS','\\sROCKS') → 5

Osservazioni:

--

In questo Esempio la prima lettere di Fiandaca si trova alla posizione 10

regexp_match('Salvatore Fiandaca','\\sFiandaca') → 10


try

Prova un'espressione e restituisce il suo valore se priva di errori. Se l'espressione restituisce un errore, verrà restituito un valore alternativo se fornito altrimenti la funzione restituirà null.

Sintassi:

  • try(expression[,alternative])

[ ] contrassegna componenti opzionali

Argomenti:

  • expression l'espressione che dovrebbe essere eseguita
  • alternative il risultato che verrà restituito se l'espressione restituisce un errore

Esempi:

try( to_int( '1' ), 0 ) → 1
try( to_int( 'a' ), 0 ) → 0
try( to_date( 'invalid_date' ) ) → NULL