lectia8_EXEMPLE
lectia8_EXEMPLE
FUNCTIONS
1. CHARACTER MANIPULATION
Concatenation
str1 || str2
CONCAT(str1,str2)
=> =====abc=====
LTRIM, RTRIM
Trim off unwanted characters from the left
(LTRIM), right (RTRIM)
LTRIM(string,[’set’])
LTRIM(string,[’set’])
=> ==**abc**==**
SELECT RTRIM('**==**abc**==**','*')
FROM DUAL
=> **==**abc**==
TRIM
trim ( [leading|trailing|both
['set'] FROM] s1)
=> babababab
TRIM Examples
SELECT TRIM(trailing 'ab' from 'ababbabbabab')
FROM DUAL
=> ababbabb
TRIM Examples
SELECT TRIM('ab' from 'ababbabbabab')
FROM DUAL
=> babb
LOWER, UPPER, INITCAP
UPPER(string)
LOWER(string)
INITCAP(string)
LOWER, UPPER, INITCAP
SELECT UPPER('aBcD'), LOWER('aBcD'),
INITCAP('aBcD') FROM DUAL
=> 3
SUBSTR
SUBSTR(string,start[,count])
- If no count is specified, the function return the substring
starting at position start and going to the end of the
string.
Results:
Eminescu, Mihai Mihai Eminescu
Creanga, Ion Ion Creanga
Cosbuc, George George Cosbuc
SINGLE ROW
FUNCTIONS
1. NUMBERS MANIPULATION
ABS
ABS(n)
returns the absolute value of n
ABS(10) = 10
ABS(-5.8) = 5.8
CEIL, FLOOR
Ceil(nr)
FLOOR(nr)
POWER(3,2) = 9
POWER(3,3) = 27
POWER(3,1.086)=3.29726371
POWER(64,0.5) = 8
ROUND
ROUND(value,precision)
ROUND(55.5) = 56
ROUND(33.3) = 33
ROUND(-55.5) = -56
ROUND(-33.3) = -33
ROUND(45.926,2) = 45.93
ROUND(45.923,2) = 45.92
ROUND(45.926,-1) = 50
ROUND(42.926,-1) = 40
ROUND(45.926,-2) = 0
ROUND(65.926,-2) = 100
TRUNC
TRUNC(value,precision)
TRUNC(55.5) = 55
TRUNC(33.3) = 33
TRUNC(-55.5) = -55
TRUNC(-33.3) = -33
TRUNC(45.926,2) = 45.92
TRUNC(45.923,2) = 45.92
TRUNC(45.926,-1) = 50
TRUNC(42.926,-1) = 40
TRUNC(45.926,-2) = 0
TRUNC(65.926,-2) = 0
Date Functions
SYSDATE
returneaza date&time a serverului;
nu are parametri
CURRENT_DATE
returneaza data curenta de pe calculatorul local
MONTH_BETWEEN(date1,date2)
returneaza numarul de luni dintre doua date
calendaristice;
valoarea returnata e un nr. real;
Valoarea poate negativa (daca date2 e mai recenta
decat date1)
ADD_MONTH(date,nr)
Aduna un nr. de luni la o data calendaristica
SELECT sysdate, ADD_MONTH(sysdate,5)
FROM DUAL
=> 03-MAR-06 03-AUG-06
NEXT_DAY(date,'Friday')
returneaza urmatoarea zi de vineri de dupa ziua date (adica chiar daca
azi e fineri next_day(sysdate,'Friday') nu va returna ziua curenta ci
vinerea viitoare).
SELECT sysdate, NEXT_DAY(sysdate,'Monday'),
NEXT_DAY(sysdate,'Friday')
FROM dual
=> 03-MAR-06 06-MAR-06 10-MAR-06
LAST_DAY(date)
Returneaza ultima zi din luna din care face parte date
SELECT sysdate, LAST_DAY(sysdate),
LAST_DAY(sysdate+30)
FROM dual
=> 03-MAR-06 31-MAR-06 30-APR-06
Observatie
In Oracle pentru valorile de tip data calendaristica se memoreaza pe
langa data propriu-zisa si ore, minute, secunde.
SELECT '03-MAR-06'-sysdate FROM DUAL
=> 0.516 (sau ceva de genul acesta…)
TRUNC(date)
Trunchiaza date la ora 12 AM (miezul noptii, inceputul zilei
ROUND(date,'Month')
TRUNC(date,'Month')
Rotunjeste/trunchiaza la inceput de luna, rotunjirea se face dupa 16 ale lunii,
inclusiv, la luna urmatoare
=> 03-MAR-06
01-MAR-06
01-MAR-06
01-APR-06
01-MAR-06
ROUND(date,'Year')
TRUNC(date,'Year')
Rotunjeste/trunchiaza la inceput de an (rotunjirea se face dupa 1 iulie)
=> 03-MAR-06
01-JAN-06
01-JAN-06
01-JAN-07
01-MAR-06
Conversion Functions
Conversion Functions
Date -> Char
TO_CHAR (data, 'format')
Cuvintele dintre ghilimele in format sunt inserate in sirul afisat
exact cum apar
Spatiile ce apar informat sunt reproduse in rezultatul afisat
fm – elimina spatiile sau zerourile nesemnificative
Ddth DdTH
Select to_char(sysdate,'DdTH-mm-YYYY') from dual
=> 10Th-03-2006
ddth ddTH
Select to_char(sysdate,'ddTH-mm-YYYY') from dual
=> 10th-03-2006
Conversion Functions
Date -> Char
D – ziua din saptamana (1..7)
Select to_char(sysdate,'d-mm-YYYY') from dual
=> 6-03-2006
DAY
Select to_char(sysdate,'Day, dd-mm-YYYY') from dual
=> Friday, 10-03-2006
Select TO_CHAR(TO_DATE('01-01-97','dd-mm-rr'),'RRR')
=>
Select TO_CHAR(TO_DATE('01-01-97','dd-mm-rr'),'YYYY')
=>
Select TO_CHAR(TO_DATE('01-01-97','dd-mm-yy'),'RRR')
=>