logo

SQL | Espressioni condizionali

Di seguito sono riportate le espressioni condizionali in SQL

    L'espressione CASE: consente di utilizzare le istruzioni IF-THEN-ELSE senza dover invocare procedure.
    In una semplice espressione CASE, l'SQL cerca la prima coppia WHEN……THEN per la quale expr è uguale a comparazione_expr e restituisce return_expr. Se la condizione precedente non è soddisfatta, esiste una clausola ELSE, l'SQL restituisce else_expr. Altrimenti restituisce NULL.
    Non possiamo specificare null letterale per return_expr e else_expr. Tutte le espressioni (expr, confronti_expr, return_expr) devono essere dello stesso tipo di dati.
    Sintassi:



     CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>

    Esempio:

       Input : SELECT first_name, department_id, salary, CASE department_id WHEN 50 THEN 1.5*salary WHEN 12 THEN 2.0*salary ELSE salary END 'REVISED SALARY' FROM Employee;>

      Produzione :

    Spiegazione : Nelle istruzioni SQL precedenti, il valore di department_id viene decodificato. Se è 50, lo stipendio viene aumentato 1,5 volte, se è 12, lo stipendio viene aumentato 2 volte, altrimenti non vi è alcun cambiamento nello stipendio. La funzione DECODE: facilita le richieste condizionali eseguendo il lavoro di un'istruzione CASE o IF-THEN-ELSE.
    La funzione DECODE decodifica un'espressione in modo simile alla logica IF-THEN-ELSE utilizzata in vari linguaggi. La funzione DECODE decodifica l'espressione dopo averla confrontata con ciascun valore di ricerca. Se l'espressione è uguale alla ricerca, viene restituito il risultato.
    Se il valore predefinito viene omesso, viene restituito un valore null laddove un valore di ricerca non corrisponde a nessuno dei valori dei risultati.
    Sintassi:



     DECODE (col/expression, search1, result1 [, search2, result2,........,] [, default])>
     Input : SELECT first_name, department_id, salary, DECODE(department_id, 50, 1.5*salary, 12, 2.0*salary, salary) 'REVISED SALARY' FROM Employee;>

    Produzione :

    Spiegazione: Nelle istruzioni SQL precedenti, viene testato il valore di department_id. Se è 50, lo stipendio viene aumentato 1,5 volte, se è 12, lo stipendio viene aumentato 2 volte, altrimenti non vi è alcun cambiamento nello stipendio.

    COALESCE: Restituisce il primo argomento non nullo. Viene restituito Null solo se tutti gli argomenti sono nulli. Viene spesso utilizzato per sostituire un valore predefinito con valori nulli quando i dati vengono recuperati per la visualizzazione.
    NOTA: Come per le espressioni CASE, anche COALESCE non valuterà gli argomenti a destra del primo argomento non nullo trovato.
    Sintassi:

    interfaccia comparabile in Java
     COALESCE( value [, ......] )>
     Input: SELECT COALESCE(last_name, '- NA -') from Employee;>

    Produzione:

    Spiegazione: - NA - verrà visualizzato nel punto in cui il cognome è nullo altrimenti verranno visualizzati i rispettivi cognomi. GREATEST: restituisce il valore più grande da un elenco di un numero qualsiasi di espressioni. Il confronto fa distinzione tra maiuscole e minuscole. Se i tipi di dati di tutte le espressioni nell'elenco non sono gli stessi, tutte le altre espressioni vengono convertite nel tipo di dati della prima espressione per il confronto e se questa conversione non è possibile, SQL genererà un errore.
    NOTA: Restituisce null se qualsiasi espressione nell'elenco è nulla.
    Sintassi:



     GREATEST( expr1, expr2 [, .....] )>
    •  Input: SELECT GREATEST('XYZ', 'xyz') from dual;>
       Output: GREATEST('XYZ', 'xyz') xyz>

      Spiegazione: Il valore ASCII degli alfabeti piccoli è maggiore.

    •  Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->

      Spiegazione: Poiché è presente null, null verrà mostrato come output (come menzionato nella descrizione sopra).

    SENULL: se espressione1 non è NULL, restituisce espressione1; altrimenti restituisce expr2. Restituisce un valore numerico o stringa, a seconda del contesto in cui viene utilizzato.
    Sintassi:

     IFNULL( expr1, expr2 )>
    •  Input: SELECT IFNULL(1,0) FROM dual;>
       Output: - 1>

      Spiegazione : Poiché nessuna espressione è nulla.

    •  Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>

      Spiegazione: Poiché expr1 è nullo, viene mostrato expr2.

    IN: controlla se un valore è presente all'interno di un insieme di valori e può essere utilizzato con WHERE, CHECK e la creazione di viste.
    NOTA: Come le espressioni CASE e COALESCE, anche IN non valuterà gli argomenti a destra del primo argomento non nullo trovato.
    Sintassi:

     WHERE column IN ( x1, x2, x3 [,......] )>
     Input: SELECT * from Employee WHERE department_id IN(50, 12);>

    Produzione:

    Spiegazione: Tutti i dati dei dipendenti vengono visualizzati con l'ID dipartimento 50 o 12.

    MENO: restituisce il valore più piccolo da un elenco di un numero qualsiasi di espressioni. Il confronto fa distinzione tra maiuscole e minuscole. Se i tipi di dati di tutte le espressioni nell'elenco non sono gli stessi, tutte le altre espressioni vengono convertite nel tipo di dati della prima espressione per il confronto e se questa conversione non è possibile, SQL genererà un errore.
    NOTA: restituisce null se qualsiasi espressione nell'elenco è nulla.

    Sintassi:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Input: SELEZIONA MINIMO('XYZ', 'xyz') da doppio; Risultato: MENO('XYZ', 'xyz') XYZ>

      Spiegazione: Il valore ASCII degli alfabeti maiuscoli è inferiore.

    •  Input: SELECT LEAST('XYZ', null, 'xyz') from dual; Output: LEAST('XYZ', null, 'xyz') ->

      Spiegazione: Poiché è presente null, null verrà mostrato come output (come menzionato nella descrizione sopra).

    NULLIF: restituisce un valore nullo se valore1=valore2, altrimenti restituisce valore1.
    Sintassi:

    cos'è obj in Java
     NULLIF( value1, value2 )>

    Esempio:

     Input: SELECT NULLIF(9995463931, contact_num) from Employee;>

    Produzione:

Spiegazione: NULL viene visualizzato per il dipendente il cui numero corrisponde al numero specificato. Per il resto dei dipendenti viene restituito il valore 1.