330 likes | 446 Views
CHARACTER FUNCTION. CHARACTER FUNCTIONS. CASE- MANIPULATION FUNCTIONS. CHARACTER- MANIPULATION FUNCTIONS. LOWER UPPER INITCAP. CONCAT SUBSTR LENGTH INSTR LPAD | RPAD TRIM REPLACE. CHARACTER FUNCTION. CHARACTER FUNCTION ESEMPI.
E N D
CHARACTER FUNCTION CHARACTER FUNCTIONS CASE- MANIPULATION FUNCTIONS CHARACTER- MANIPULATION FUNCTIONS LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD | RPAD TRIM REPLACE
CHARACTER FUNCTION ESEMPI SELECT ‘Il lavoro di ‘||INITCAP(nome)||’ ‘||UPPER(cognome)||’ è ‘||mansione AS work FROM anagrafica; Risultato : Il lavoro di Paolo ROSSI è impiegato SELECT nome, cognome, indirizzo FROM anagrafica WHERE LOWER(cognome) = ‘rossi’;
NUMBER FUNCTION SELECT ROUND(45.923,2) A, ROUND(45.923,0) B, ROUND(45.923,-1) C FROM dual; Risultato : A = 45.92 , B = 46, C = 50 SELECT TRUNC(45.923,2) A, TRUNC(45.923,0) B, TRUNC(45.923,-2) C FROM dual; Risultato : A = 45.92 , B = 45, C = 0
LAVORARE CON LE DATE • SELECT SYSDATE • FROM 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
LAVORARE CON LE DATE SELECT (SYSDATE – hire_date)/7 AS WEEK FROM EMPLOYEES
FUNZIONI DATE Assumiamo SYSDATE = ’25-Jul-95’
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
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:
CONVERSIONE DATA TYPE SELECT TO_CHAR(salary, ‘$99,999.00’) AS SALARY FROM 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)
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’) tot FROM employees WHERE department_id IN (50, 80)
NULLIF SELECT first_name, LENGTH(first_name) “espr1”, last_name,LENGTH(last_name) “espr2”, NULLIF(LENGTH(first_name), LENGTH(last_name)) result FROM employees;
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) commissione FROM 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.
CONDITIONAL EXPRESSIONS • le espressioni condizionali permettono di • usare IF-THEN-ELSE • ci sono due metodi: • CASE • DECODE
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 salario FROM employees; …
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;