You are on page 1of 8

**CHARACTER FUNCTIONS**

--LPAD
--RPAD
--LTRIM
--RTRIM
**Lpad
SQL> select LPAD('Page 1',15,'*') Demo from dual;
DEMO
--------------*********Page 1
**Rpad
SQL> select RPAD('Page 1',15,'*') Demo from dual;
DEMO
--------------Page 1*********
**Ltrim
SQL> select ltrim('$1200000','$') from dual;
**Rtrim
SQL> select rtrim('1220$','$') from dual;
RTRI
---1220
=======================
**Aggregate Functions**
=======================
--Avg
--Max
--Min
--Sum
=======
**MAX**
=======
SQL> select MAX(salary) from employees;
MAX(SALARY)
----------24000
SQL> select MAX(salary) from employees where department_id=60;
MAX(SALARY)
----------9000
=======
**MIN**
=======
SQL> select MIN(salary) from employees;

MIN(SALARY)
----------2100
=======
**SUM**
=======
SQL> select sum(salary) from employees;
SUM(SALARY)
----------691400
==========
**LENGTH**
==========
SQL> select length(first_name), first_name from employees where department_id=30
;
LENGTH(FIRST_NAME)
-----------------3
9
6
5
3
5

FIRST_NAME
-------------------Den
Alexander
Shelli
Sigal
Guy
Karen

6 rows selected.

=====================
**General functions**
=====================
--NVL
--NVL2
--COALESCE
--NULLIF
**NullIf(expr1,expr2)
--compares expr1 and expr2
--if both are equal then funtion returns null
--If not equal then returns expr1
SQL> select nullif(10,10) from dual;
NULLIF(10,10)
-------------

SQL> select nullif(2,4) from dual;


NULLIF(2,4)
----------2

**NVL(expr1,expr2)
--If expr1 is null returns expr2
--If expr1 is not null then it returns expr1
SQL> select nvl(2,5) from dual;
NVL(2,5)
---------2

SQL> select nvl(null,5) from dual;


NVL(NULL,5)
----------5
SQL> select first_name, NVL(To_CHAR(commission_pct),('Not applicable'))"Commissi
on" from employees where last_name like 'B%';
FIRST_NAME
-------------------Hermann
Shelli
Amit
Elizabeth
Sarah
David
Laura
Harrison
Alexis

Commission
---------------------------------------Not applicable
Not applicable
.1
.15
Not applicable
.25
Not applicable
.2
Not applicable

9 rows selected.
--Here, if expr1 ie commission_pct=NULL then resultset displays not null
--If expr1 has value then displays that value
**NVL2(expr1,expr2,expr3)
--takes three values
--if expr1 is not null then NVL2 returns expr2
--if expr1 is null then NVL2 returns expr3
SQL> select NVL2(null,2,3) from dual;
NVL2(NULL,2,3)
-------------3
SQL> select NVL2(1,2,3) from dual;
NVL2(1,2,3)
----------2
SQL> select last_name,salary,commission_pct,nvl2(commission_pct,'SAL+COMM','SAL
') "TOTAL INCOME"from employees where department_id in(50,80) and last_name like

'D%';
LAST_NAME
SALARY COMMISSION_PCT TOTAL IN
------------------------- ---------- -------------- -------Davies
3100
SAL
Dellinger
3400
SAL
Dilly
3600
SAL
Doran
7500
.3 SAL+COMM

**COALESCE(expr1,expr2,expr3...exprN)
1)Coalesce function returns first not null value from its parameter list
2)If all the parameters are null, then null is returned.
select coalesce(null, null, null) from dual;

===================
**Case expression**
===================
SQL>
2
3
4
5
6
7
8

select country_name,
case
country_name
when 'Australia' then 'Buenos-Aires'
when 'Japan' then 'Bejieng'
else 'No Idea'
end capital
from countries;

COUNTRY_NAME
---------------------------------------Argentina
Australia
Belgium
Brazil
Canada
Switzerland
China
Germany
Denmark
Egypt
France

CAPITAL
-----------No Idea
Buenos-Aires
No Idea
No Idea
No Idea
No Idea
No Idea
No Idea
No Idea
No Idea
No Idea

COUNTRY_NAME
---------------------------------------HongKong
Israel
India
Italy
Japan
Kuwait
Mexico
Nigeria
Netherlands
Singapore
United Kingdom

CAPITAL
-----------No Idea
No Idea
No Idea
No Idea
Bejieng
No Idea
No Idea
No Idea
No Idea
No Idea
No Idea

COUNTRY_NAME
---------------------------------------United States of America
Zambia
Zimbabwe

CAPITAL
-----------No Idea
No Idea
No Idea

25 rows selected.
===========
**Decode**
===========
select country_id,country_name,
decode(country_id, 'ZW', 'HARARE','US' ,'WASINGTON D.C','ZM','TOKIO','LET ME CHE
CK') "CAPITAL CITY" from countries
CO
-AR
AU
BE
BR
CA
CH
CN
DE
DK
EG
FR

COUNTRY_NAME
---------------------------------------Argentina
Australia
Belgium
Brazil
Canada
Switzerland
China
Germany
Denmark
Egypt
France

CAPITAL CITY
------------LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK

CO
-HK
IL
IN
IT
JP
KW
MX
NG
NL
SG
UK

COUNTRY_NAME
---------------------------------------HongKong
Israel
India
Italy
Japan
Kuwait
Mexico
Nigeria
Netherlands
Singapore
United Kingdom

CAPITAL CITY
------------LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK
LET ME CHECK

CO
-US
ZM
ZW

COUNTRY_NAME
---------------------------------------United States of America
Zambia
Zimbabwe

CAPITAL CITY
------------WASINGTON D.C
TOKIO
HARARE

25 rows selected.
**MOD**
SQL> select mod(10,3) from dual;
MOD(10,3)
----------

**ROUND**
SQL> select round(10.75) from dual;
ROUND(10.75)
-----------11
SQL> select round(10.75,1) from dual;
ROUND(10.75,1)
-------------10.8
SQL> select round(10.73732,2) from dual;
ROUND(10.73732,2)
----------------10.74
SQL> select round(654.43723,-1) from dual;
ROUND(654.43723,-1)
------------------650
SQL> select round(658.43723,-1) from dual;
ROUND(658.43723,-1)
------------------660
SQL> select round(6732.954,-4) from dual;
ROUND(6732.954,-4)
-----------------10000
**TRUNC**
SQL> select trunc(6732.95,1) from dual;
TRUNC(6732.95,1)
---------------6732.9
SQL> select trunc(6732.95,-1) from dual;
TRUNC(6732.95,-1)
----------------6730
**ARITHMETIC WITH DATES**
SQL> select sysdate-hire_date from hr.employees where department_id=30;

SYSDATE-HIRE_DATE
----------------6780.95315
6618.95315
5667.95315
5820.95315
5341.95315
5073.95315
6 rows selected.
**MONTHS_BETWEEN**
SQL> select employee_id, months_between(sysdate,hire_date) months_worked, salary
from hr.employees where department_id=30;
EMPLOYEE_ID MONTHS_WORKED
SALARY
----------- ------------- ---------114
222.77275
11000
115
217.417911
3100
116
186.224363
2900
117
191.224363
2800
118
175.514686
2600
119
166.675976
2500
6 rows selected.
SQL> select employee_id, months_between(hire_date,sysdate)months_worked, salary
from hr.employees where department_id=30;
EMPLOYEE_ID MONTHS_WORKED
SALARY
----------- ------------- ---------114
-222.77282
11000
115
-217.41798
3100
116
-186.22443
2900
117
-191.22443
2800
118
-175.51476
2600
119
-166.67605
2500
6 rows selected.
--NEXT DAY
SQL> select next_day(sysdate,2) from dual;
NEXT_DAY(
--------01-JUL-13
SQL> select next_day(sysdate,3) from dual;
NEXT_DAY(
--------02-JUL-13
SQL> select next_day(sysdate,4) from dual;
NEXT_DAY(

--------03-JUL-13
SQL> select next_day(sysdate,'mon') from dual;
NEXT_DAY(
--------01-JUL-13
SQL> select next_day(sysdate,'thu') from dual;
NEXT_DAY(
--------04-JUL-13
--LAST DAY
SQL> select last_day(sysdate) from dual;
LAST_DAY(
--------30-JUN-13
--USING ROUND WITH DATES
SQL> select round(sysdate,'dd') from dual;
ROUND(SYS
--------01-JUL-13
SQL> select round(sysdate,'mm') from dual;
ROUND(SYS
--------01-JUL-13
SQL> select round(sysdate-15,'mm') from dual;
ROUND(SYS
--------01-JUN-13

You might also like