Upload
romhilda-pagano
View
224
Download
3
Embed Size (px)
Citation preview
CHARACTER FUNCTION
CHARACTER FUNCTIONS
CASE- MANIPULATION FUNCTIONS CHARACTER- MANIPULATION FUNCTIONS
LOWERUPPERINITCAP
CONCATSUBSTRLENGTHINSTRLPAD | RPADTRIMREPLACE
Operatore Descrizione
LOWER(colonna/espressione) Converte caratteri maiuscoli o misti in caratteri minuscoli
UPPER(colonna/espressione) Converte caratteri minuscoli o misti in caratteri maiuscoli
INITCAP(colonna/espressione) Converte la prima lettera in maiuscola
CHARACTER FUNCTION
Funzione Risultato
LOWER(‘SQL Course’) sql course
UPPER(‘SQL Course’) SQL COURSE
INITCAP(‘SQL Course’) Sql Course
SELECT ‘Il lavoro di ‘||INITCAP(nome)||’ ‘||UPPER(cognome)||’ è ‘||mansione AS workFROM anagrafica;
Risultato : Il lavoro di Paolo ROSSI è impiegato
SELECT nome, cognome, indirizzoFROM anagraficaWHERE LOWER(cognome) = ‘rossi’;
CHARACTER FUNCTION
ESEMPI
Operatore Descrizione
CONCAT(colonna1/espressione1, colonna2/espressione2)
Concatena il primo carattere con il secondo
SUBSTR(colonna/espressione,m[,n]) Restituisce la parte di stringa che va da m a n (n è il numero di caratteri della substring). Se m è negativo parte il conteggio dalla fine della stringa, se n è omesso restituisce tutti i caratteri fino alla fine della stringa.
LENGTH(colonna/espressione) Restituisce il numero di caratteri in un’espressione
INSTR(colonna/espressione,’string’,[,m],[n])
Ritorna la posizione della stringa all’interno dell’espressione. Opzionale : la posizone m da cui partire la ricerca o la n (lunghezza della substring dove cercare, da m a m+n ).
CHARACTER FUNCTION
LPAD(colonna/espressione, n, ‘string’)
Mette il carattere ‘string’ a sinistra dell’espressione quante volte serve per raggiungere n
RPAD(colonna/espressione, n, ‘string’)
Mette il carattere ‘string’ a destra dell’espressione quante volte serve per raggiungere n
TRIM Elimina un carattere da una stringa
REPLACE(text,search_string,replacement_sting)
Sostituisce in un testo la stringa cercata, se c’è, con la stringa da sostituire
CHARACTER FUNCTION
CHARACTER FUNCTION
Funzione Risultato
CONCAT(‘Hello’,’World’) Hello World
SUBSTR(‘HelloWorld’,1,5) Hello
LENGTH(‘HelloWorld’) 10
INSTR(‘HelloWorld’,’W’) 6
LPAD(nome,10,’*’) *****Paolo
RPAD(nome,10,’*’) Paolo*****
TRIM(‘H’ FROM ‘HelloWorld’) elloWorld
REPLACE(‘HelloWorld’,’Hello’,’Ciao’)
CiaoWorld
NUMBER FUNCTION
Funzione Risultato
ROUND(45.926, 2) 45.93
TRUNC(45.926, 2) 45.92
MOD(1600,300) 100
Funzione Descrizione
ROUND(colonna/espressione, n) Arrotonda il valore con n decimali. Se n è omesso, non vengono messi decimali. Se n è negativo vengono arrotondati i numeri a sinistra
TRUNC(colonna/espressione, n) Tronca il valore alla n posizione, se n è omesso, n = 0 SE N è negativo tronca di due decimali a sinistra
MOD(m,n) Ritorna il resto di m diviso n
NUMBER FUNCTION
SELECT ROUND(45.923,2) A, ROUND(45.923,0) B, ROUND(45.923,-1) CFROM dual;
Risultato : A = 45.92 , B = 46, C = 50
SELECT TRUNC(45.923,2) A, TRUNC(45.923,0) B, TRUNC(45.923,-2) CFROM dual;
Risultato : A = 45.92 , B = 45, C = 0
LAVORARE CON LE DATE
SELECT SYSDATEFROM DUAL;
Operazioni con le date:
• aggiungere e togliere numeri dalle o alle date restituendo una data
• sottrazione tra due date per trovare il numero di giorni tra una data e l’altra
• aggiungere ore ad una data dividendo il numero per 24
Operazione Risultato
date + numero date
date – numero date
date - date numero di giorni
date + number/24 date
LAVORARE CON LE DATE
SELECT (SYSDATE – hire_date)/7 AS WEEK FROM EMPLOYEES
FUNZIONI DATE
Funzione Descrizione
MONTHS_BETWEEN (date1, date2) Numero di mesi tra due date (risultato positivo o negativo)
ADD_MONTHS (date, n) Aggiunge n mesi alla data
NEXT_DAY (date, ‘char’) Ritorna il prossimo giorno che sarà ‘char’. Char può essere numerico o una stringa
LAST_DAY (date) L’ultimo giorno del mese indicato da date
ROUND (date[,’fmt’]) Ritorna la data arrotondata nel formato specificato fmt. Se fmt è omesso, la data è arrotondata al giorno più vicino
TRUNC(date [,’fmt’]) Truncate date
FUNZIONI DATE
Funzione Risultato
MONTHS_BETWEEN (’01-Jan-95’, ’11-Jan-94’)
19.677
ADD_MONTHS (’11-Jan-94’, 6) ’11-Jul-94’
NEXT_DAY (’01-Sep-95’, ‘Friday’) ’01-Sep-95’
LAST_DAY (’01-Feb-95’) ’28-Feb-95’
FUNZIONI DATE
Assumiamo SYSDATE = ’25-Jul-95’
Funzione Risultato
ROUND (SYSDATE, ’MONTH’) ’01-AUG-95’
ROUND (SYSDATE, ’YEAR’) ’01-JAN-96’
TRUNC (SYSDATE, ’MONTH’) ’01-JUL-95’
TRUNC (SYSDATE ’YEAR’) ’01-JAN-95’
CONVERSIONE DATA TYPE
DA A
VARCHA2 O CHAR NUMBER
VARCHA2 O CHAR DATE
NUMBER VARCHAR2
DATE VARCHAR2
CONVERSIONE DATA TYPE
FUNZIONE SCOPO
TO_CHAR(number|date, [ fmt], [nlsparametro]
Converte un numero o una data in un VARCHAR2 nel formato fmt.Conversione di numero: nlsparametro specifica il formato in cui dovrà apparire la stringa di caratteri che rappresenterà il numero• decimal character• group separator• local currency symbol• international currency symbolSe omesso usa il parametro di defaultConversione di date:Il parametro nlsparametro indica come verranno rappresentati giorno e mese e le abbreviazioni. Se nullo usa il default
CONVERSIONE DATA TYPE
FUNZIONE SCOPO
TO_NUMBER(char, [ fmt], [nlsparametro]) Converte una stringa di caratteri contenente numeri in un numero nel formato indicato da fmt.Nlsparametro ha la stessa funzione come nel caso della TO_CHAR
TO_DATE(char, [ fmt], [nlsparametro]) Converte una stringa di caratteri che rappresenta una data nel formato fmt specificato. Se fmt è omesso, usa il formato DD-MON-YYNlsparametro ha la stessa funzione come nel caso della TO_CHAR
CONVERSIONE DATA TYPE
TO_CHAR(date, ‘format_model’)
Format model:
• deve essere messo tra apici ed è case sensitive
• può includere tutti i formati validi per la data
SELECT employee_id, TO_CHAR(hire_date, ‘MM/YY’) Month_Hired
FROM employees
WHERE last_name = ‘Higgins’;
I formati data possibili sono:
YYYY, YEAR, MM, MONTH, MON, DY, DAY, DD
CONVERSIONE DATA TYPE
Il formato per l’ora è:
HH24:MI:SS AM 15:45:32 PM
E’ possibile scrivere stringhe come:
DD “of” MONTH 12 of OCTOBER
TH Numero ordinale (esempio, DDTH per 4°)
SP Numero (esempio, DDSP per QUATTRO)
SPTH o THSP Numero ordinale (esempio DDSPTH per QUARTO)
CONVERSIONE DATA TYPE
Esempio:
SELECT last_name,
TO_CHAR(hire_date, ‘DD Month YYYY’) AS HIREDATE
FROM employees
Restituisce record:
King 17 June 1997
Ernst 21 May 1991
… ….
CONVERSIONE DATA TYPE
TO_CHAR(number, ‘format_model’)
Ci sono alcuni tipi di formato utilizzabile nella To_CHAR per visualizzare un numero in formato carattere VARCHAR2:
Formato Descrizione Esempio Risultato
9 Rappresenta un numero 999999 1234
0 Rappresenta 0 099999 001234
$ Dollaro $999999 $1234
. Decimale 999999.99 1234.00
, Separatore di migliaia 999,999 1,234
CONVERSIONE DATA TYPE
SELECT TO_CHAR(salary, ‘$99,999.00’) AS SALARYFROM employees
Risultato query:
$6,000.00
…
FUNZIONI ANNIDATE
F3 ( F2 ( F1 (col1, arg1),arg2), arg3)
Risultato annidamento:
Primo step : F1 (col1, arg1) = A Secondo step : F2 (A,arg2) = B Terzo step : F3 (B, arg3)
Le funzioni annidate vengono valutate dal livello più interno verso l’esterno.
ESEMPIO:
SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS (hire_date, 6), ‘Friday’), ‘Day, Month DDth, YYYY’) FROM employees;
FUNZIONI
NVL (espr1, espr2)
NVL2 (espr1, espr2, espr3)
NULLIF (espr1, espr2)
COALESCE (espr1, espr2,…,esprn)
Funzione Descrizione
NVL Converte un valore null in una valore
NVL2 Se espr1 non è nulla, NVL2 restituisce espr2. Se espr1 è nulla, NVL2 restituisce espr3. Espr1 può essere di qualsiasi tipo.
NULLIF Compara le due espressioni e restituisce nullo se sono uguali altrimenti restituisce espr1
COALESCE Ritorna la prima espressione non nulla nella lista di espr
NVL
• converte un valore nullo in un valore attuale
• i tipi di dato usati sono date, caratteri e numeri
NVL (commission_pct, 0)
NVL (hire_date, ’01-JAN-97’)
NVL (job_id, ‘No Job Jet’)
NVL2
SELECT salary, commission_pct, NVL2(commission_pct, ‘SAL+COMM’, ‘SAL’) totFROM employeesWHERE department_id IN (50, 80)
SALARY COMMISSION_PCT TOT
10500 0.2 SAL+COMM
11000 0.3 SAL+COMM
5800 SAL
NULLIF
SELECT first_name, LENGTH(first_name) “espr1”, last_name, LENGTH(last_name) “espr2”, NULLIF(LENGTH(first_name), LENGTH(last_name)) resultFROM employees;
First_name espr1 Last_name espr2 Result
Steven 6 King 4 6
Neena 5 Kochhar 7 5
Bruce 5 Ernst 5
COALESCE
• la differenza da NVL è che permette di considerare più valori
• se la prima espressione è NON NULLA ritorna la prima espressione altrimenti se la seconda espressione è NON NULLA ritorna la seconda espressione…altrimenti ritorna l’espressione n
COALESCE
SELECT last_name, COALESCE(commission_pct,salary,10) commissioneFROM employees;
Se commission_pct è not null, viene visualizzato. Se commission_pct è null, viene visualizzato Salary. Se commission_pct e salary sono null, viene visualizzato il valore 10.
Last_name espr2
King 24000
Kochhar 17000
Grant 0.15
CONDITIONAL EXPRESSIONS
• le espressioni condizionali permettono di usare IF-THEN-ELSE
• ci sono due metodi:CASEDECODE
CASE EXPRESSIONS
CASE espr WHEN espr1_comparazione THEN espr1_ritorno [WHEN espr2_comparazione THEN espr2_ritorno WHEN esprn_comparazione THEN esprn_ritorno
ELSE else_espr] END
Oracle controlla il primo WHEN…THEN, se espr è uguale all’espr1_comparazione restituisce espr1_ritorno.E così via fino all’ultima espressione di comparazione.Altrimenti restituisce else_espr.
Non è possibile specificare NULL per le espr_ritorno o per else_espr.
Tutte le espressioni devono essere dello stesso tipo di dati.
CASE EXPRESSIONS
ESEMPIO:SELECT last_name, job_id, salary, CASE job_id WHEN ‘IT_PROG’ THEN 1.10*salary WHEN ‘ST_CLERCK’ THEN 1.15*salary WHEN ‘SA_REP’ THEN 1.20*salary ELSE salary END salarioFROM employees;
…
LAST_NAME JOB_ID SALARY SALARIO
Lorentz IT_PROG 4200 4260
Rajs ST_CLERCK 3500 4025
FUNZIONE DECODE
DECODE (col/espr, ricerca1, risultato1 [, ricerca2, risultato2, … ]
[default ])
Se col/espr è uguale a ricerca1 restituisce risultato1 ect.
Se il DEFAULT viene omesso, verrà restituito il valore NULL se nessuna comparazione ritorna valore positivo.
FUNZIONE DECODE
Esempio SELECT last_name, job_id, salary,
DECODE (job_id, ‘IT_PROG’, 1.10*salary, ‘ST_CLERCK’, 1.15*salary,
‘SA_REP’, 1.20*salary, salary) SALARIO FROM employees;
LAST_NAME JOB_ID SALARY SALARIO
Lorentz IT_PROG 4200 4260
Rajs ST_CLERCK 3500 4025