Conversioni NVL per vari tipi di dati. Istruzioni di diramazione nella descrizione del comando SELECT Oracle nvl

Abbiamo accennato alle funzioni nidificate poco prima, ora le esamineremo un po’ più in dettaglio. Considereremo anche le funzioni per lavorare con il valore NULL e le funzioni che aiutano a implementare l'operazione di ramificazione in una query.

Funzioni annidate

Le funzioni nidificate utilizzano il valore restituito da una funzione come parametro di input per un'altra funzione. Le funzioni restituiscono sempre un solo valore. Pertanto, è possibile considerare il risultato di una chiamata di funzione come un valore letterale quando lo si utilizza come parametro per un'altra chiamata di funzione. Le funzioni stringa possono essere annidate a qualsiasi livello di annidamento. Una chiamata di funzione assomiglia a questa

Funzione1(parametro1, parametro2, …) = risultato

La sostituzione di un parametro di funzione con una chiamata a un'altra funzione può risultare in espressioni come

F1(param1.1, F2(param2.1, param2.2, F3(param3.1)), param1.3)

Le funzioni annidate vengono valutate prima che i loro risultati vengano utilizzati come valori di input per altre funzioni. Le funzioni vengono valutate dal livello di annidamento più profondo a quello superiore da sinistra a destra. L'espressione precedente viene eseguita come segue

  1. Viene valutata la funzione F3(param1) e il valore restituito viene utilizzato come terzo parametro per la funzione 2, chiamiamolo param2.3
  2. Quindi viene valutata la funzione F2(param1, param2.2, param2.3) e il valore restituito viene utilizzato come secondo parametro della funzione F1 - param1.2
  3. Infine viene valutata la funzione F1(param1, param2, param1.3) e il risultato viene restituito al programma chiamante.

Pertanto la funzione F3 si trova al terzo livello di nidificazione.

Consideriamo la richiesta

select next_day(last_day(sysdate)-7, 'tue') from dual;

  1. Sono presenti tre funzioni in questa query, dal livello inferiore al livello superiore: SYSDATE, LAST_DAY, NEXT_DAY. La richiesta viene eseguita come segue
  2. Viene eseguita la funzione annidata SYSDATE. Restituisce l'ora corrente del sistema. Supponiamo che la data corrente sia il 28 ottobre 2009
  3. Successivamente, viene calcolato il risultato della funzione di secondo livello LAST_DAY. LAST_DATE('28-OCT-2009') restituisce l'ultimo giorno di ottobre 2009, ovvero il 31 ottobre 2009.
  4. Quindi vengono sottratti sette giorni da questa data: risulta il 24 ottobre.
  5. Infine, viene valutata la funzione NEXT_DAY('24-OCT-2009', 'tue') e la query restituisce l'ultimo martedì di ottobre, che nel nostro esempio è 27-OCT-2009.

È piuttosto difficile comprendere e creare espressioni complesse utilizzando molte chiamate di funzioni annidate, ma ciò avviene con tempo e pratica. Puoi suddividere tali espressioni in parti e testarle separatamente. La tabella DUAL è molto utile per testare query e risultati di chiamate di funzione. È possibile testare ed eseguire il debug di piccoli componenti, che vengono poi combinati in un'unica grande espressione desiderata.

Funzioni di ramificazione

Le funzioni di salto, note anche come IF-THEN-ELSE, vengono utilizzate per determinare il percorso di esecuzione in base ad alcune circostanze. Le funzioni di diramazione restituiscono risultati diversi in base al risultato della valutazione della condizione. Il gruppo di tali funzioni include funzioni per lavorare con il valore NULL: NVL, NVL2, NULLIF e COALESCE. E anche le funzioni comuni rappresentate dalla funzione DECODE e dall'espressione CASE. La funzione DECODE è una funzione Oracle, mentre l'espressione CASE è presente nello standard ANSI SQL.

Funzione NVL

La funzione NVL verifica il valore di una colonna o di un'espressione di qualsiasi tipo di dati rispetto a NULL. Se il valore è NULL, restituisce un valore predefinito alternativo non NULL, altrimenti restituisce il valore originale.

La funzione NVL ha due parametri obbligatori e la sintassi è NVL(originale, ifnull) dove originale è il valore originale da verificare e ifnull è il risultato restituito dalla funzione se il valore originale è NULL. Il tipo di dati dei parametri ifnull e original deve essere compatibile. Cioè, o il tipo di dati deve essere lo stesso oppure deve essere possibile convertire implicitamente i valori da un tipo all'altro. La funzione NVL restituisce un valore dello stesso tipo di dati del tipo di dati del parametro originale. Consideriamo tre domande

Query 1: seleziona nvl(1234) da dual;

Query 2: seleziona nvl(null, 1234) da dual;

Query 3: select nvl(substr('abc', 4), 'Non esiste sottostringa') from dual;

Poiché la funzione NVL richiede due parametri, la richiesta 1 restituirà l'errore ORA-00909: numero di argomenti non valido. La query 2 restituirà 1234 perché il valore NULL è controllato ed è NULL. La query tre utilizza una funzione SUBSTR annidata che tenta di estrarre il quarto carattere da una stringa lunga tre caratteri, restituendo NULL e la funzione NVL che restituisce la stringa "Non esiste sbustring".

La funzione NVL è molto utile quando si lavora con i numeri. Viene utilizzato per convertire i valori NULL in 0 in modo che le operazioni aritmetiche sui numeri non restituiscano NULL

Funzione NVL2

La funzione NVL2 fornisce più funzionalità di NVL, ma serve anche a gestire valori NULL. Verifica il valore di una colonna o di un'espressione di qualsiasi tipo rispetto a NULL. Se il valore non è NULL allora viene restituito il secondo parametro, altrimenti viene restituito il terzo parametro, a differenza della funzione NVL, che in questo caso restituisce il valore originale.

La funzione NVL2 ha tre parametri obbligatori e la sintassi è NVL2(originale, ifnotnull, ifnull), dove originale è il valore da testare, ifnotnull è il valore restituito se l'originale non è NULL e ifnull è il valore restituito se l'originale è NULL. I tipi di dati dei parametri ifnotnull e ifnull devono essere compatibili e non possono essere di tipo LONG. Il tipo di dati restituito dalla funzione NVL2 è uguale al tipo di dati del parametro ifnotnull. Diamo un'occhiata ad alcuni esempi

Query 1: seleziona nvl2(1234, 1, 'a string') da dual;

Query 2: seleziona nvl2(null, 1234, 5678) da dual;

Query 3: seleziona nvl2(substr('abc', 2), 'Non bc', 'Nessuna sottostringa') da dual;

Il parametro ifnotnull nella richiesta 1 è un numero e il parametro ifnotnull è una stringa. Poiché i tipi di dati non sono compatibili, viene restituito l'errore "ORA-01722: numero non valido". La query due restituisce il parametro ifnull, poiché l'originale è NULL e il risultato sarà 5678. La query tre utilizza la funzione SUBSTR che restituisce 'bc' e chiama NVL2('bc','Not bc','No substring') - che restituisce il parametro ifnotnull – 'Non bc'.

Funzione NULLIF

La funzione NULLIF controlla se due valori sono identici. Se sono uguali, viene restituito NULL, altrimenti viene restituito il primo parametro. La funzione NULLIF ha due parametri obbligatori e la sintassi è NULLIF(ifunequal, confronti_elemento). La funzione confronta due parametri e se sono identici viene restituito NULL, altrimenti il ​​parametro è ifunequal. Consideriamo le richieste

Query 1: seleziona nullif(1234, 1234) da dual;

La query uno restituisce NULL poiché i parametri sono identici. Le stringhe nella query 2 non vengono convertite in una data, ma confrontate come stringhe. Poiché le stringhe hanno lunghezze diverse, il parametro ifunequal viene restituito 24-JUL-2009.

Nella Figura 10-4, la funzione NULLIF è annidata all'interno della funzione NVL2. La funzione NULLIF a sua volta utilizza le funzioni SUBSTR e UPPER come parte di un'espressione nel parametro ifunequal. Con questa espressione viene confrontata la colonna EMAIL che restituisce la prima lettera del nome abbinata al cognome per i dipendenti il ​​cui nome è lungo 4 caratteri. Quando questi valori sono uguali, NULLIF restituirà NULL, altrimenti restituirà il valore del parametro ifunequal. Questi valori vengono utilizzati come parametro per la funzione NVL2. NVL2 a sua volta restituisce una descrizione della corrispondenza o meno degli elementi confrontati.

Figura 10-4 – Utilizzo della funzione NULLIF

Funzione COALESCE

La funzione COALESCE restituisce il primo valore diverso da NULL dall'elenco dei parametri. Se tutti i parametri sono NULL, viene restituito NULL. La funzione COALESCE ha due parametri obbligatori e un numero qualsiasi di parametri opzionali e la sintassi è COALESCE(expr1, expr2, ..., exprn) dove il risultato sarà expr1 se il valore di expr 1 non è NULL, altrimenti il ​​risultato sarà expr2 se non è NULL, ecc. COALESCE ha lo stesso significato delle funzioni NVL nidificate

COALESCE(espr1, espr2) = NVL(espr1, espr2)

COALESCE(espr1, espr2, espr3) = NVL(espr1,NVL(espr2, espr3))

Il tipo di dati del valore restituito se viene trovato un valore non NULL è uguale al tipo di dati del primo valore non NULL. Per evitare l'errore "ORA-00932: tipi di dati incoerenti", tutti i parametri non NULL devono essere compatibili con il primo parametro non NULL. Diamo un'occhiata a tre esempi

Query 1: seleziona coalesce(null, null, null, 'a string') from dual;

Query 2: seleziona coalesce(null, null, null) da dual;

Query 3: select coalesce(substr('abc', 4), 'Not bc', 'No substring') from dual;

La query 1 restituisce il quarto parametro: una stringa, poiché è il primo parametro non NULL. La query due restituisce NULL perché tutti i parametri sono NULL. La query 3 valuta il primo parametro, ottiene il valore NULL e restituisce il secondo parametro poiché è il primo parametro non NULL.

I parametri della funzione NVL2 possono creare confusione se si ha già familiarità con la funzione NVL. NVL(originale, ifnull) restituisce originale se il valore non è NULL, altrimenti ifnull. NVL2(originale, ifnotnull, ifnull) restituisce ifnotnull se l'originale non è NULL altrimenti ifnull. La confusione deriva dal fatto che il secondo parametro della funzione NVL è ifnull, mentre la funzione NVL2 è ifnotnull. Quindi non fare affidamento sulla posizione del parametro nella funzione.

Funzione DECODIFICA

La funzione DECODE implementa la logica if-then-else testando l'uguaglianza dei primi due parametri e restituendo un terzo valore se sono uguali o un valore diverso se non sono uguali. La funzione DECODE ha tre parametri obbligatori e la sintassi è DECODE(expr1, comp1, iftrue1, , ). Questi parametri vengono utilizzati come mostrato nel seguente esempio di pseudocodice

SE expr1=comp1 restituisce iftrue1

Altrimenti se expr1=comp2 restituisce iftrue2

Altrimenti se exprN=compN restituisce iftrueN

Altrimenti restituisce NULL|iffalse;

Innanzitutto, expr1 viene confrontato con comp1. Se sono uguali, viene restituito iftrue1. Se expr1 non è uguale a comp1, ciò che accade dopo dipende da se sono specificati i parametri comp2 e iftrue2. Se fornito, il valore di expr1 viene confrontato con comp2. Se i valori sono uguali, viene restituito iftrue2. In caso contrario, se sono presenti coppie di parametri compN, iftrueN, expr1 e compN vengono confrontati e, se uguali, viene restituito iftrueN. Se non è stata trovata alcuna corrispondenza in alcun insieme di parametri, viene restituito se è falso se è stato specificato questo parametro oppure NULL.

Tutti i parametri nella funzione DECODE possono essere espressioni. Il tipo del valore restituito è uguale al tipo del primo elemento di convalida: il parametro comp 1. Espressione expr 1 viene convertito implicitamente nel tipo di dati del parametro comp1. Tutti gli altri parametri comp disponibili 1...compN vengono anche convertiti implicitamente nel tipo comp 1. DECODE tratta un valore NULL come uguale a un altro valore NULL, ad es. se expr1 è NULL e comp3 è NULL e comp2 non è NULL, viene restituito iftrue3. Diamo un'occhiata ad alcuni esempi

Query 1: seleziona decodifica (1234, 123, "123 è una corrispondenza") da dual;

Query 2: seleziona decodifica (1234, 123, "123 corrisponde", "Nessuna corrispondenza") da dual;

Query 3: select decode('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' false') da duale;

La prima query confronta i valori 1234 e 123. Poiché non sono uguali, iftrue1 viene ignorato e poiché il valore iffalse non è definito, viene restituito NULL. La richiesta due è identica alla richiesta 1, tranne per il fatto che è definito il valore ifalse. Poiché 1234 non è uguale a 123, restituisce iffalse – "Nessuna corrispondenza". La query tre controlla che i valori dei parametri corrispondano al valore di ricerca. I parametri comp1 e comp2 non sono uguali a 'search' quindi i risultati di iftrue1 e iftrue2 vengono saltati. Viene trovata una corrispondenza nella terza operazione di confronto dell'elemento comp3 (posizione del parametro 6) e viene restituito il valore di iftrue3 (parametro 7) che è uguale a 'true3'. Una volta trovata una corrispondenza, non vengono eseguiti ulteriori calcoli. Cioè, nonostante il valore di comp4 (parametro 8) corrisponda anche a expr1, questa espressione non viene mai calcolata poiché la corrispondenza è stata trovata nel confronto precedente.

Espressione CASO

Tutti i linguaggi di programmazione di terza e quarta generazione implementano il costrutto case. Come la funzione DECODE, l'espressione CASE consente di implementare la logica if-then-else. Esistono due opzioni per utilizzare l'espressione CASE. Una semplice espressione CASE imposta l'elemento sorgente da confrontare una volta e quindi elenca tutte le condizioni di test necessarie. CASE complesso (cercato) valuta entrambe le istruzioni per ciascuna condizione.

L'espressione CASE ha tre parametri obbligatori. La sintassi dell'espressione dipende dal tipo. Per una semplice espressione CASE appare così

CASE ricerca_espr

QUANDO confronto_espr1 THEN iftrue1

)

La funzione TRUNC restituisce il numero n, troncato a m cifre decimali. Il parametro m non può essere specificato; in questo caso, n viene troncato a un numero intero.

SELEZIONA TRONCA(100.25678) X1, TRONCA(-100.25678) X2, TRONCA(100.99) X3,

TRONCO(100.25678, 2) X4

DAL DOPPIO

Funzione SEGNO(n)

La funzione SIGN determina il segno di un numero. Se n è positivo, la funzione restituisce 1. Se n è negativo, restituisce -1. Se uguale a zero, viene restituito 0. Ad esempio:

SELEZIONA SEGNO(100.22) X1, SEGNO(-100.22) X2, SEGNO(0) X3

DAL DOPPIO

Una caratteristica interessante di questa funzione è la capacità di trasmettere m uguale a zero senza causare errori di divisione per 0.

Funzione POTENZA(n, m)

La funzione POWER eleva il numero n alla potenza m. Il grado può essere frazionario e negativo, il che espande significativamente le capacità di questa funzione.

SELEZIONA POTENZA(10, 2) X1, POTENZA(100, 1/2) X2,

POTENZA(1000, 1/3) X3, POTENZA(1000, -1/3) X4

DAL DOPPIO

X1 X2 X3 X4
100 10 10 0,1

In alcuni casi, potrebbe verificarsi un'eccezione quando si chiama questa funzione. Per esempio:

SELEZIONA POTENZA(-100, 1/2) X2

DAL DOPPIO

In questo caso, viene effettuato un tentativo di calcolare la radice quadrata di un numero negativo, che risulterà in un errore ORA-01428 "Argomento fuori intervallo".

Funzione SQRT(n)

Questa funzione restituisce la radice quadrata di n. Per esempio:

SELEZIONA.Q.Q.(100) X

DAL DOPPIO

Funzioni EXP(n) e LN(n).

La funzione EXP eleva e alla potenza n e la funzione LN calcola il logaritmo naturale di n (n deve essere maggiore di zero). Esempio:

SELEZIONA ESP(2) X1, LN(1) X2, LN(ESP(2)) X3

Funzione NVL

La funzione NVL viene generalmente utilizzata più spesso. La funzione riceve due parametri: NVL(expr1, expr2). Se il primo parametro expr1 non è NULL, la funzione restituisce il suo valore. Se il primo parametro è NULL, la funzione restituisce invece il valore del secondo parametro expr2.

Diamo un'occhiata a un esempio pratico. Il campo COMM nella tabella EMP può contenere valori NULL. Quando si esegue una query come:

SELEZIONA EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

DA SCOTT.EMP

il valore NULL verrà sostituito da zero. Tieni presente che quando un valore viene generato utilizzando una funzione, gli viene assegnato un alias. I risultati della query saranno simili a:

EMPNO NOME COMM NVL_COMM
7369 FABBRO 0
7499 ALLEN 300 300
7521 REPARTO 500 500
7566 JONES 0
7654 MARTINO 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 RE 0
7844 TURNER 0 0
7900 GIACOMO 0
7902 GUADO 0
7934 MUGNAIO 0

Funzione CEIL(n)

La funzione CEIL restituisce il più piccolo intero maggiore o uguale al numero n passato come parametro. Per esempio:

SELEZIONA CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

DAL DOPPIO

Funzione TRUNC(n [,m])

La funzione TRUNC restituisce il numero n, troncato a m cifre decimali. Il parametro m non può essere specificato; in questo caso, n viene troncato a un numero intero.

SELEZIONA TRONCA(100.25678) X1, TRONCA(-100.25678) X2, TRONCA(100.99) X3,

TRONCO(100.25678, 2) X4

DAL DOPPIO

Funzione SEGNO(n)

La funzione SIGN determina il segno di un numero. Se n è positivo, la funzione restituisce 1. Se n è negativo, restituisce -1. Se uguale a zero, viene restituito 0. Ad esempio:

SELEZIONA SEGNO(100.22) X1, SEGNO(-100.22) X2, SEGNO(0) X3

DAL DOPPIO

Una caratteristica interessante di questa funzione è la capacità di trasmettere m uguale a zero senza causare errori di divisione per 0.

Funzione POTENZA(n, m)

La funzione POWER eleva il numero n alla potenza m. Il grado può essere frazionario e negativo, il che espande significativamente le capacità di questa funzione.

SELEZIONA POTENZA(10, 2) X1, POTENZA(100, 1/2) X2,

POTENZA(1000, 1/3) X3, POTENZA(1000, -1/3) X4

DAL DOPPIO

X1 X2 X3 X4
100 10 10 0,1

In alcuni casi, potrebbe verificarsi un'eccezione quando si chiama questa funzione. Per esempio:

SELEZIONA POTENZA(-100, 1/2) X2

DAL DOPPIO

In questo caso, viene effettuato un tentativo di calcolare la radice quadrata di un numero negativo, che risulterà in un errore ORA-01428 "Argomento fuori intervallo".

Funzione SQRT(n)

Questa funzione restituisce la radice quadrata del numero n. Per esempio:

SELEZIONA.Q.Q.(100) X

DAL DOPPIO

Funzioni EXP(n) e LN(n).

La funzione EXP eleva e alla potenza n e la funzione LN calcola il logaritmo naturale di n (n deve essere maggiore di zero). Esempio:

SELEZIONA ESP(2) X1, LN(1) X2, LN(ESP(2)) X3

Funzione TO_CHAR con numeri

Funzioni per convertire i dati in altri tipi di dati. TO_CHAR(numero) converte un numero in testo. TO_NUMBER(stringa) converte il testo in un numero.

SELECT TO_CHAR (123) FROM DUAL restituirà la stringa 123, SELECT TO_NUMBER (`12345") FROM DUAL restituirà il numero 12345.

Lavoro di laboratorio. Modifica del formato del numero di output

Modifiche al formato dei valori numerici in Oracle SQL, la funzione TO_CHAR per lavorare con valori numerici.

Esercizio:

Scrivere una query che visualizzi informazioni su nome, cognome e stipendio dei dipendenti dalla tabella hr.employees nel formato mostrato in Fig. 3.4-1:

Riso. 3.4 -1

In questo caso i dati dovrebbero essere ordinati in modo tale che vengano visualizzate per prime le righe relative ai dipendenti con lo stipendio più alto.

Nota:

Alcuni valori salariali in Fig. 3.4-1 sono stati modificati, quindi potrebbero non essere uguali ai tuoi valori.

Soluzione:

SELEZIONA nome come "Nome", cognome come "Cognome", TO_CHAR (STIPENDITORE, "L999999999.99") come "Stipendio" DA hr.employees ORDINA PER STIPENDIO DESC.

Funzioni TO_NUMBER e TO_DATE

Funzione per convertire una stringa in una data TO_DATE (stringa, formato). I possibili valori del formato sono già stati discussi sopra, quindi fornirò diversi esempi dell'utilizzo di questa funzione. Esempi:

SELEZIONARE TO_DATE("01/01/2010", `GG.MM.AAAA") DA DUAL restituirà la data "01/01/2010";

SELEZIONARE TO_DATE("01.GEN.2010", `GG.LUN.AAAA") DA DUAL restituirà la data "01/01/2009";

SELEZIONARE TO_DATE("15-01-10", `GG-MM-AA") DA DUAL restituirà la data "15/01/2010".

Funzione per convertire una stringa in un valore numerico TO_NUMBER (stringa, formato). I valori di formato più comuni sono elencati nella tabella, quindi diamo un'occhiata all'uso di questa funzione utilizzando degli esempi. Esempi:

SELEZIONARE TO_NUMBER(`100") DA DUAL restituirà il numero 100 SELECT TO_NUMBER (`0010.01", "9999D99") DA DUAL restituirà il numero 10.01;

SELEZIONARE TO_NUMBER("500.000", "999G999") DA DUAL restituirà il numero 500000.

Elemento RR in formato data

L'elemento del formato datetime RR è simile all'elemento del formato datetime YY, ma fornisce ulteriore flessibilità per la memorizzazione dei valori di data in altri secoli. L'elemento di formato datetime RR consente di memorizzare le date del 20° secolo nel 21° secolo specificando solo le ultime due cifre dell'anno.

Se le ultime due cifre dell'anno corrente sono comprese tra 00 e 49, l'anno restituito avrà le stesse prime due cifre dell'anno corrente.

Se le ultime due cifre dell'anno corrente sono comprese tra 50 e 99, le prime due cifre dell'anno restituito saranno maggiori di 1 rispetto alle prime due cifre dell'anno corrente.

Se le ultime due cifre dell'anno corrente sono comprese tra 00 e 49, le prime 2 cifre dell'anno restituito saranno 1 in meno rispetto alle prime 2 cifre dell'anno corrente.

Se le ultime due cifre dell'anno corrente sono comprese tra 50 e 99, l'anno restituito avrà le stesse prime due cifre dell'anno corrente.

Funzione NVL

La funzione NVL viene generalmente utilizzata più spesso. La funzione riceve due parametri: NVL (expr1, expr2). Se il primo parametro expr1 non è NULL, la funzione restituisce il suo valore. Se il primo parametro è NULL, la funzione restituisce invece il valore del secondo parametro expr2.

Esempio: seleziona NVL (supplier_city, n/a") dai fornitori:

L'istruzione SQL precedente restituirà n/" se il campo supply_city contiene un valore null. In caso contrario, restituirà il valore fornitore_city.

Un altro esempio di utilizzo della funzione NVL in Oracle/PLSQL è:

seleziona fornitore_id, NVL (supplier_desc, fornitore_nome) dai fornitori.

Questa istruzione SQL restituirà Nome del fornitore campo se fornitore_desc contiene un valore nullo. Altrimenti tornerà fornitore_desc.

Ultimo esempio: utilizzare la funzione NVL in Oracle/PLSQL è: select NVL(commissione, 0) dalle vendite;

Questa istruzione SQL ha restituito il valore 0 if commissione Il campo contiene un valore nullo. Altrimenti verrebbe restituito commissioni campo.

Conversioni NVL per vari tipi di dati

Per convertire un valore nullo in un valore effettivo, utilizzare la funzione NVL: NVL ( espressione1, espressione2), Dove:

espressione1- Il valore originale o calcolato, che potrebbe non essere definito.

espressione2- Il valore che viene sostituito al valore non definito.

Nota: La funzione NVL può essere utilizzata per convertire qualsiasi tipo di dati, ma il risultato sarà sempre dello stesso tipo di espressione1.

Conversione NVL per vari tipi:

NUMERO - NVL (colonna numerica, 9).

CHAR o VARCHAR2 - NVL (caratteri|colonna,"Non disponibile").

Lavoro di laboratorio. Utilizzando la funzione NVL

Funzione NVL per lavorare con valori null in Oracle SQL.

Esercizio:

Scrivere una query che visualizzi le informazioni sul nome e sul cognome del dipendente dalla tabella hr.employees., nonché la tariffa di commissione (colonna COMMISSION_PCT) per il dipendente. In questo caso, per quei dipendenti per i quali non è definita la provvigione, dovrà essere visualizzato il valore 0. L'esito della richiesta dovrebbe essere quello mostrato in Fig. 3.5-1.

Riso. 3.5 -1 (valori mostrati a partire dalla riga 51)

Soluzione:

Il codice di richiesta corrispondente potrebbe essere così:

SELEZIONA first_name come "Nome", last_name come "Cognome", NVL (COMMISSION_PCT, 0) come "Tasso di commissione" DA hr.employees.




Superiore