33
CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONS CHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD | RPAD TRIM REPLACE

CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

Embed Size (px)

Citation preview

Page 1: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

CHARACTER FUNCTION

CHARACTER FUNCTIONS

CASE- MANIPULATION FUNCTIONS CHARACTER- MANIPULATION FUNCTIONS

LOWERUPPERINITCAP

CONCATSUBSTRLENGTHINSTRLPAD | RPADTRIMREPLACE

Page 2: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 3: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 4: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 5: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 6: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 7: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 8: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 9: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 10: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 11: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 12: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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’

Page 13: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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’

Page 14: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

CONVERSIONE DATA TYPE

DA A

VARCHA2 O CHAR NUMBER

VARCHA2 O CHAR DATE

NUMBER VARCHAR2

DATE VARCHAR2

Page 15: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 16: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 17: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 18: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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)

Page 19: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

… ….

Page 20: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 21: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

CONVERSIONE DATA TYPE

SELECT TO_CHAR(salary, ‘$99,999.00’) AS SALARYFROM employees

Risultato query:

$6,000.00

Page 22: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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;

Page 23: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 24: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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’)

Page 25: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 26: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 27: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 28: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 29: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

CONDITIONAL EXPRESSIONS

• le espressioni condizionali permettono di usare IF-THEN-ELSE

• ci sono due metodi:CASEDECODE

Page 30: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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.

Page 31: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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

Page 32: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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.

Page 33: CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONSCHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD

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