SQL Functions:
**********
-->To perform a task and must return value.
-->Oracle supports two types of functons.They are
a)Pre-Define/Built In Functions (Use in SQL AND PL/SQL)
b)User Define Functions (Use in PL/SQL)
Pre-Define Functions:
*********************
-->These are classified into two categories.
Single Row Functions (Scalar Functions)
Multiple Row Functions (Grouping Functions)
Single Row Functions:
*********************
-->These functions are return a single row or group of values.
a)Numeric or Number Functions.
b)String Functions
c)Date Functions
d)Conversion Functions
Numeric Functions:
******************
-->Numeric functions are used to perform operations on numbers.
-->They accept numeric values as input and return numeric values as output.
a)POWER(M,N):
*************
-->It gives the power of given expression.
SYNTAX:
********
POWER(M,N)
M-->VALUE
N-->EXPONENT
EX:
***
SELECT POWER(20,2) FROM DUAL;
SELECT POWER(2,4),POWER(4,8),POWER(0,0),POWER(NULL,NULL) FROM DUAL;
B)SQRT(M)
*********
-->It gives suare root of given number.
-->Input value must be positive.
EX:
***
SELECT SQRT(9) FROM DUAL;
SELECT SQRT(2),SQRT(8),SQRT(0),SQRT(NULL) FROM DUAL;
C)MOD():
********
-->gives remainder after M/N operation.
SYNTAX:
*******
MOD(M,N)
M-->VALUE
N-->DIVISOR
EX:
***
SELECT MOD(5,2) FROM DUAL;
SELECT MOD(1,5),MOD(5,2),MOD(0,0),MOD(NULL,NULL) FROM DUAL;
D) CEIL(VALUE):
***************
-->It displays next highest value.
-->It returns a value which is greater than or equal to given value.
SYNTAX:
*******
CEIL(NUMBER)
EX:
***
SELECT CEIL(8) FROM DUAL;
SELECT CEIL(6.2) FROM DUAL;
SELECT CEIL(12.6) FROM DUAL;
SELECT CEIL(4.4),CEIL(-5.1),CEIL(0),CEIL(NULL) FROM DUAL;
SELECT CEIL(2),CEIL(2.01),CEIL(23.65),CEIL(245.21),CEIL(4567.78),CEIL(-23.1),CEIL(-456.90),CEIL(-3451.091) FROM DUAL;
SELECT CEIL(-123.45),CEIL(+123.45),CEIL(123.45) FROM DUAL;
SELECT CEIL(-123),CEIL(+123),CEIL(123) FROM DUAL;
CREATE TABLE XX_CEIL(
FEE NUMBER
);
/
INSERT INTO XX_CEIL VALUES (14);
/
INSERT INTO XX_CEIL VALUES (19.8);
/
INSERT INTO XX_CEIL VALUES (100.01);
/
INSERT INTO XX_CEIL VALUES (148.92);
/
INSERT INTO XX_CEIL VALUES (1120.67);
/
COMMIT;
/
SELECT FEE,CEIL(FEE) FROM XX_CEIL;
SELECT INVOICE_AMOUNT,CEIL(INVOICE_AMOUNT)
FROM AP_INVOICES_ALL;
E)FLOOR():
**********
-->It displays the next lowest value.
-->The purpose of FLOOR function is it returns the integer values which is equals to the specified number or less than the specified number.
SYNTAX:
*******
FLOOR(NUMBER)
EX:
***
SELECT FLOOR(12.85) FROM DUAL;
SELECT FLOOR(31.1) FROM DUAL;
SELECT FLOOR(18.980) FROM DUAL;
SELECT FLOOR(1234.47) FROM DUAL;
SELECT FLOOR(-123.45),FLOOR(+123.45),FLOOR(123.45) FROM DUAL;
SELECT FLOOR(-123),FLOOR(+123),FLOOR(123) FROM DUAL;
SELECT FLOOR(2),FLOOR(2.90),FLOOR(13.12),FLOOR(45.7),FLOOR(980.213),FLOOR(5678.213),FLOOR(-123),FLOOR(-123.21),FLOOR(-1456.765) FROM DUAL;
SELECT FEE,FLOOR(FEE)
FROM XX_CEIL;
SELECT FEE,FLOOR(FEE),CEIL(FEE)
FROM XX_CEIL
SELECT INVOICE_AMOUNT,FLOOR(INVOICE_AMOUNT),CEIL(INVOICE_AMOUNT)
FROM AP_INVOICES_ALL;
F)ROUND(M,N):
*************
-->It rounds the value upto given number of position.
-->If check the condition.
-->Rounds value to some specified decimal.
SYNTAX:
*******
ROUND(NUMBER,[DECIMAL PLACES])
EX:
***
SELECT ROUND(12.234) FROM DUAL; --12
SELECT ROUND(12.234,2) FROM DUAL; --12.23
SELECT ROUND(12.567) FROM DUAL; --13
SELECT ROUND(123.567,2) FROM DUAL;
SELECT ROUND(123.567,-1) FROM DUAL;
SELECT ROUND(123.567,-2) FROM DUAL;
SELECT ROUND(123.567,-3) FROM DUAL;
SELECT ROUND(13.875),ROUND(456.987),ROUND(45.356) FROM DUAL;
/
SELECT ROUND(12.65,1) FROM DUAL;
/
SELECT ROUND(45.243,1) FROM DUAL;
/
SELECT ROUND(48.799,2) FROM DUAL;
/
SELECT ROUND(678.8597,3) FROM DUAL;
/
SELECT ROUND(1234.98),ROUND(778.34),ROUND(45.65),ROUND(678.21,1),ROUND(765.989,2),ROUND(6789.7654,3) FROM DUAL;
/
1235 778 46 678.2 765.99 6789.765
/
SELECT ROUND(123.45,-1) FROM DUAL;
/
SELECT ROUND(126.45,-1) FROM DUAL;
/
SELECT ROUND(18.97,-1) FROM DUAL;
/
SELECT ROUND(151.89,-2) FROM DUAL;
/
SELECT ROUND(10022.4,1) FROM DUAL;
/
SELECT INVOICE_AMOUNT,ROUND(INVOICE_AMOUNT),ROUND(INVOICE_AMOUNT,1)
FROM AP_INVOICES_ALL;
SELECT FEE,ROUND(FEE)
FROM XX_CEIL;
SELECT ROUND(123.45),ROUND(123.45,0),ROUND(123.45,1),ROUND(123.45,2),ROUND(123.45,3) FROM DUAL;
SELECT ROUND(123.45,-1),ROUND(123.45,-2),ROUND(123.45,-3),ROUND(123.45,-4),ROUND(123.45,-5) FROM DUAL
G)TRUNC(M,N):
*************
-->Its work similar to that of round,but it won't check the condition.
-->Return a number with some digits truncated.
SYNTAX:
*******
TRUNC(NUMBER,DECIMAL PLACES)
EX:
****
SELECT TRUNC(12.678) FROM DUAL;
SELECT TRUNC(12.678,2) FROM DUAL;
SELECT ROUND(12.67,2),TRUNC(12.67,2) FROM DUAL;
SELECT TRUNC(123.4),TRUNC(123.45,0),TRUNC(123.45,1),TRUNC(123.45,2),TRUNC(123.45,3) FROM DUAL;
SELECT TRUNC(123.45,-0),TRUNC(123.45,-1),TRUNC(123.45,-2),TRUNC(123.45,-3),TRUNC(123.45,-4) FROM DUAL;
/
SELECT TRUNC(12.78),TRUNC(100.78),TRUNC(123.45),TRUNC(1234.80),TRUNC(456.45) FROM DUAL;
/
SELECT TRUNC(12.78,1),ROUND(12.78,1),TRUNC(100.78,1),ROUND(100.78,1),TRUNC(123.456,2),ROUND(123.456,2),TRUNC(1234.987,3),ROUND(1234.987,3),TRUNC(456.4589,3) FROM DUAL;
/
SELECT INVOICE_AMOUNT,CEIL(INVOICE_AMOUNT),FLOOR(INVOICE_AMOUNT),ROUND(INVOICE_AMOUNT),TRUNC(INVOICE_AMOUNT) FROM AP_INVOICES_ALL;
H)ABS:
********
-->It gives the absolute value of n.
-->If n is -ve it converts to positive.
SYNTAX:
*******
ABS(NUMBER)
EX:
***
SELECT ABS(-12) FROM DUAL;
SELECT ABS(10),ABS(-5),ABS(0),ABS(NULL) FROM DUAL;
SELECT ENAME,SAL,COMM,ABS(COMM-SAL) FROM EMP;
I)SIGN:
********
-->If n is +ve gives 1
-->If n is -ve gives -1
-->If n is 0 gives 0
SYNTAX:
*******
SIGN(NUMBER)
EX:
***
SELECT SIGN(2*9) FROM DUAL;
SELECT SIGN(9*-2) FROM DUAL;
SELECT SIGN(8-4*2) FROM DUAL;
SELECT SAL,SIGN(SAL) FROM EMP;
SELECT COMM-SAL,SIGN(COMM-SAL) FROM EMP;
SELECT COMM,SIGN(COMM) FROM EMP;
STRING FUNCTIONS OR CHARACTER FUNCTIONS:
****************************************
-->String or Character functions are used to manipulate text strings.They accept strngs or characters as input and return both character and number values as output.
ASCII(C)
**********
EX:
***
SELECT ASCII('A') FROM DUAL;
SELECT ASCII('a') FROM DUAL;
SELECT ASCII('0') FROM DUAL;
UPPER():
********
-->It is used to convert the string into upper or capital characters.
SYNTAX:
********
UPPER(STRING)
EX:
***
SELECT UPPER('abcd') FROM DUAL;
SELECT UPPER('oracle') FROM DUAL;
SELECT UPPER('ORACLE') FROM DUAL;
SELECT UPPER('computer')FROM DUAL;
SELECT ENAME,UPPER(ENAME) FROM EMP;
/
select vendor_name,upper(vendor_name)
from ap_suppliers;
/
select object_name,upper(object_name)
from dba_objects;
/
select item_description,upper(item_description)
from po_lines_all;
LOWER():
********
-->It is used to convert the strng into lower characters.
SYNTAX:
*******
LOWER(STRING)
EX:
***
SELECT LOWER('ORACLE') FROM DUAL;
SELECT ENAME,LOWER(ENAME) FROM EMP;
SELECT INVOICE_CURRENCY_CODE,LOWER(INVOICE_CURRENCY_CODE)
FROM AP_INVOICES_ALL
/
DROP TABLE EMP1;
/
CREATE TABLE EMP1 AS SELECT * FROM EMP;
/
UPDATE EMP1 SET ENAME=LOWER(ENAME) WHERE JOB='SALESMAN';
/
XOMMIT;
/
SELECT * FROM EMP1 WHERE JOB='SALESMAN';
/
--To check the DATABASE
--The data has converted into lower case data after apply the lower function
INITCAP():
**********
-->It is used to convert the first character into upper character in a given strng.
SYNTAX:
*******
INITCAP(STRING)
EX:
***
SELECT INITCAP('oracle') FROM DUAL;
SELECT INITCAP('oraCLE') FROM DUAL;
SELECT INITCAP('x y z') FROM DUAL;
SELECT INITCAP('xy z p qr') FROM DUAL;
SELECT ENAME,INITCAP(ENAME) FROM EMP;
select party_type,initcap(party_type)
from hz_parties;
LENGTH():
*********
-->It is used to display the number of characters in a given string.
SYNTAX:
*******
LENGTH(STRING)
EX:
***
SELECT LENGTH('ORACLE') FROM DUAL;
SELECT LENGTH(ENAME) FROM EMP;
SELECT LENGTH('ASDFGHJUIL%)(^JIO') FROM DUAL;
SELECT LENGTH('ASDEFRGT:%"12343098**') FROM DUAL;
SELECT ENAME,LENGTH(ENAME) FROM EMP;
SELECT * FROM EMP WHERE LENGTH(ENAME)=4;
/
SELECT ITEM_DESCRIPTION,LENGTH(ITEM_DESCRIPTION)
FROM PO_LINES_ALL;
/
REVERSE():
*********
-->It is used to reverse the given string.
SYNTAX:
*******
REVERSE(STRING)
EX:
***
SELECT REVERSE('ORACLE') FROM DUAL;
SELECT REVERSE(ENAME) FROM EMP;
SELECT ENAME,REVERSE(ENAME) FROM EMP;
SELECT * FROM EMP WHERE REVERSE(ENAME)=4;
CONCAT():
*********
-->It is used to merge the two strings and we have to use '||' symbol while merge the two strings.
SYNTAX:
********
CONCAT(STRING1,STRING2)
EX:
***
SELECT CONCAT('ORACLE','PVT LINMITED') FROM DUAL;
SELECT CONCAT('ASDF','PQRS') FROM DUAL;
SELECT CONCAT('ORACLE','SERVER') FROM DUAL;
SELECT 'ORACLE'||'PVT LIMITED' FROM DUAL;
SELECT CONCAT('ORACLE','INDIA','LTD') FROM DUAL;
--It will throw the error (Invalid number of arguments)
SELECT CONCAT(CONCAT('ORACLE','INDIA'),'LTD') FROM DUAL;
--To overcome the above issue by using || operator.
SELECT 'ORACLE'||'INDIA'||'LTD' FROM DUAL;
/
select 'oracle'||'apps'||'india' from dual;
/
select 'oracle'||' '||'apps'||' '||'india' from dual;
/
SELECT 'ORACLE'||' '||'INDIA'||' '||'LTD' FROM DUAL;
/
SELECT ENAME||' ITS WORKING AS '||JOB
FROM EMP;
LTRIM():
********
-->It is used to remove the character from left end of the given string,if the character is found.
-->To remove unwanted spaces or unwanted characters from left side of the given string.
SYNTAX:
********
LTRIM(STRING1[,STRING2])
EX:
***
SELECT LTRIM(' ORACLE') FROM DUAL;
SELECT LTRIM('ORACLE','O') FROM DUAL;
SELECT LTRIM('ORACLE','o') FROM DUAL;
SELECT LTRIM('ORACLE','ORA') FROM DUAL;
SELECT LTRIM('OOOOOORACLE','O') FROM DUAL;
SELECT LTRIM('OOOOOORACLEOOOOINDIAOOOO','O') FROM DUAL;
SELECT LTRIM('OOOOORACLEOOOOINDIAOOOO','OO') FROM DUAL;
SELECT LTRIM('ORACLE','A') FROM DUAL;
SELECT LTRIM('XXXXXXORACLE','X') FROM DUAL;
SELECT LTRIM('123ORACLE','123') FROM DUAL;
SELECT LTRIM(ENAME) FROM EMP;
RTRIM():
********
-->It is used to remove the character from right end of the given string,if the character is found.
-->To remove unwanted spaces or unwanted characters from right side of the given string.
SYNTAX:
********
RTRIM(STRING1[,STRING2])
EX:
***
SELECT RTRIM('ORACLE','O') FROM DUAL;
SELECT RTRIM('ORACLE','CL') FROM DUAL;
SELECT RTRIM('ORACLE','CLE') FROM DUAL;
SELECT RTRIM('ORACLE ') FROM DUAL;
SELECT RTRIM('ORACLE','E') FROM DUAL;
SELECT RTRIM('ORACLE','e') FROM DUAL;
SELECT RTRIM('ORACLEXXXXXXX','X') FROM DUAL;
SELECT RTRIM(ENAME) FROM EMP;
SELECT RTRIM(LTRIM('XXXXXXORACLEXXX','X'),'X') FROM DUAL;
SELECT RTRIM(LTRIM('**********ORACLE***********','*'),'*') FROM DUAL;
SELECT LTRIM(RTRIM('**********ORACLE***********','*'),'*') FROM DUAL;
TRIM():
*******
-->It is used to remove the characters from both sides of a given string.
-->To remove unwanted spaces or unwanted characters from both sides of the given string.
SYNTAX:
*******
TRIM('TRIMMING CHAR' FROM 'STRING')
EX:
***
SELECT TRIM('X' FROM 'XXXXXXORACLEXXXX') FROM DUAL;
SELECT TRIM(BOTH 'X' FROM 'XXXXXXORACLEXXXX') FROM DUAL;
SELECT TRIM(' ORACLE') FROM DUAL;
SELECT TRIM(LEADING ' ' FROM ' ORACLE') FROM DUAL;
SELECT TRIM('ORACLE ') FROM DUAL;
SELECT TRIM(TRAILING ' ' FROM 'ORACLE ') FROM DUAL;
SELECT TRIM(' ORACLE ') FROM DUAL;
SELECT LTRIM(RTRIM('OOOOOORACLEOOOOOO','O'),'O') FROM DUAL;
SELECT LTRIM(RTRIM('OOOOOORACLEOOOOOO','o'),'o') FROM DUAL;
CREATE TABLE POW
(
SNAME VARCHAR2(20)
);
INSERT INTO POW VALUES(' ABC');
INSERT INTO POW VALUES('ABC ');
INSERT INTO POW VALUES(' ABC ');
COMMIT;
SELECT SNAME,LTRIM(SNAME),LENGTH(SNAME),LENGTH(LTRIM(SNAME)) FROM POW;
SELECT SNAME,RTRIM(SNAME),LENGTH(SNAME),LENGTH(RTRIM(SNAME)) FROM POW;
SELECT SNAME,TRIM(SNAME),LENGTH(SNAME),LENGTH(TRIM(SNAME)) FROM POW;
/
LPAD():
*******
-->It is used to add the character from left end.
-->-->The LPAD() function pads the left side of a string with a specific set of characters.
-->To fill a string with specific character on left side of the given string.
SYNTAX:
*******
EX:
****
SELECT LPAD('ORACLE',8,'*') FROM DUAL;
SELECT LPAD('ORACLE',10) FROM DUAL; --Third argument is optional.
SELECT LPAD('ORACLE',20,'*') FROM DUAL;
SELECT ENAME,LPAD(ENAME,10,'*') FROM EMP;
SELECT ENAME,LENGTH(LPAD(ENAME,10,'*')) FROM EMP;
RPAD():
*******
-->It is used to add the character from right end.
-->The RPAD() function pads the right side of a string with a specific set of characters.
-->To fill a string with specific character on right side of the given string.
SYNTAX:
*******
RPAD(STRING1,LENGTH,STRING2)
EX:
****
SELECT RPAD('ORACLE',8,'*') FROM DUAL;
SELECT ENAME,RPAD(ENAME,10,'*') FROM EMP;
SELECT ENAME,LENGTH(RPAD(ENAME,10,'*')) FROM EMP;
--The below query using both LPAD and RPAD
select rpad(lpad(ename,10,'*'),15,'*') from emp;
SELECT RPAD(LPAD('ORACLE','15','*'),'25','*') FROM DUAL;
/
Requirement O/P:LPAD(STRING1,LENGTH,STRING2)
****************
K**G
B***E
M****N
/
select rpad(substr('king',1,1),length('king')-1,'*')||substr('king',-1,1) from dual;
SELECT ENAME,RPAD(SUBSTR(ENAME,1,1),ROUND(LENGTH(ENAME)*2/2)-1,'*')||SUBSTR(ENAME,-1,1) RESULT FROM EMP;
/
TRANSLATE():
************
-->It is used to translate the character wise in a given string,if the character is found.
-->To translate a single character with another single character.
-->It is not posible to translate entire string.
SYNTAX:
*******
TRANSLATE(STRING1,STRING2,STRING3)
STRING1 --SOURCE STRING OR INPUT STRING
STRING2 --Which we want to replace
STRING3 --WHAT WE WANT TO TRANSLATE
EX:
***
SELECT TRANSLATE('WELCOME','W','A') FROM DUAL;
SELECT TRANSLATE('WELCOME','COME','PQRS') FROM DUAL;
SELECT TRANSLATE('ORACLE SERVER','OEL','123') FROM DUAL;
SELECT TRANSLATE('ORACLE SERVER','OEL','12') FROM DUAL;
SELECT ENAME,SAL,TRANSLATE(SAL,'0123456789','$b@gH*v#t%') SALARY FROM EMP;
SQL: 0=$,1=b,2=@,3=g,4=H,5=*,6=v,7=#,8=t,9=%
REPLACE():
**********
-->It is used to replace entire string.
-->To replace one string with another string.
-->It is not posible to replace more than one strng.
SYNTAX:
*******
REPLACE(STRING1,STRING2,STRING3)
STRING1 --SOURCE STRING OR INPUT STRING
STRING2 --Which we want to replace
STRING3 --WHAT WE WANT TO REPLACE
EX:
***
SELECT REPLACE('WELCOME TO ORACLE APPS','ORACLE','PLSQL') FROM DUAL;
SELECT REPLACE('E BUSINESS SOLUTIONS','BUSINESS','EBS') FROM DUAL;
SELECT REPLACE('HELLO','ELL','XYZ') FROM DUAL;
SELECT REPLACE('HELLO','L','ABC') FROM DUAL;
SELECT REPLACE('ORACLE SERVER','ER','12') FROM DUAL;
SELECT REPLACE('ORACLE SERVER','AE','12') FROM DUAL;
SELECT REPLACE('ORACLE INDIA LIMITED','INDIA','PVT') FROM DUAL;
SELECT ENAME,REPLACE(ENAME,'IN','AB') FROM EMP;
SELECT REPLACE('ORACLE INDIA LIMITED','ORACLE','GENPACT','INDIA','PVT','LIMITED','LTD') from dual;
--To overcome this issue we are using decode functions.
DECODE():
*********
-->It is used to replace morethan one string.
-->It works like as a if condition but it does not allow the relatonal operators.
SYNTAX:
********
DECODE( expression , compare_value, return_value, [,compare, return_value] ... [,default_return_value] )
EX:
***
/
DROP TABLE XX_STU_DATA;
/
CREATE TABLE XX_STU_DATA
(
SNO NUMBER,
SNAME VARCHAR2(20),
MARKS NUMBER(3),
RESULT VARCHAR2(20)
);
/
INSERT INTO XX_STU_DATA VALUES (1,'A',90,'P');
/
INSERT INTO XX_STU_DATA VALUES (2,'B',70,'P');
/
INSERT INTO XX_STU_DATA VALUES (3,'C',50,'P');
/
INSERT INTO XX_STU_DATA VALUES (4,'D',40,'P');
INSERT INTO XX_STU_DATA VALUES (5,'E',20,'F');
/
INSERT INTO XX_STU_DATA VALUES (6,'F',90,NULL);
/
COMMIT;
/
SELECT *
FROM XX_STU_DATA;
/
SELECT SNO,
SNAME,
MARKS,
RESULT,
DECODE(RESULT,'P','PASS','F','FAIL','NO RESULT') "RESULT"
FROM XX_STU_DATA;
/
SELECT ENAME,JOB,DECODE(JOB,'PRESIDENT','PRS','MANAGER','MGR','CLERK','CLK','SALESMAN','SLMAN',JOB) FROM EMP;
SELECT ENAME,DEPTNO,DECODE(DEPTNO,10,'TEN',20,'TWENTY',30,'THIRTY',DEPTNO) FROM EMP;
SELECT ENAME,SAL,DECODE(SAL,1000,'GRADE1',3000,'GRADE2','GRADE3')DECODE_RESULT FROM EMP;
/
SELECT PO_HEADER_ID,
SEGMENT1,
TYPE_LOOKUP_CODE,
DECODE(TYPE_LOOKUP_CODE,'STANDARD','STD','RFQ','REQUEST','BLANKET','BLK',TYPE_LOOKUP_CODE)
FROM PO_HEADERS_ALL;
/
CASE(when condition then result else default value)
***************************************************
-->It is used to replace more than one string by using relational operator.
SYNTAX:
*******
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
EX:
***
SELECT SNO,
SNAME,
MARKS,
RESULT,
CASE RESULT
WHEN 'P' THEN 'PASS'
WHEN 'F' THEN 'FAIL'
ELSE 'NO RESULT'
END "RESULT"
FROM XX_STU_TAB;
/
SELECT SNO,
SNAME,
RESULT,
MARKS,
CASE
WHEN RESULT='P' AND MARKS>=75 THEN 'DISTINCTION'
WHEN RESULT='P' AND MARKS>=60 AND MARKS<75 THEN 'FIRST CLASS'
WHEN RESULT='P' AND MARKS>=50 AND MARKS<60 THEN 'SECOND CLASS'
WHEN RESULT='P' AND MARKS>=35 AND MARKS<50 THEN 'THIRD CLASS'
WHEN RESULT IS NULL THEN 'FAIL'
ELSE 'FAIL'
END CASE_RESULT
FROM XX_STU_DATA;
/
SELECT JOB,DEPTNO,
CASE WHEN DEPTNO=10 AND JOB='MANAGER' THEN 'MGR'
WHEN DEPTNO=20 AND JOB='ANALYST' THEN 'ALS'
WHEN DEPTNO=30 AND JOB='SALESMAN' THEN 'SMAN'
ELSE JOB
END result
FROM EMP;
/
SELECT EMPNO,
ENAME,
SAL,
JOB,
CASE JOB
WHEN 'PRESIDENT' THEN 'PRS'
WHEN 'CLERK' THEN 'CLK'
WHEN 'MANAGER' THEN 'MGR'
ELSE JOB
END CASE_RESULT
FROM EMP
/
SELECT SAL,
CASE WHEN SAL BETWEEN 3000 AND 5000 THEN 'MANAGER'
WHEN SAL BETWEEN 1000 AND 3000 THEN 'EMPLOYEES'
WHEN SAL<960 THEN 'OFFICE BOYS'
END SALCASE
FROM EMP;
/
SELECT SAL,
CASE
WHEN SAL BETWEEN 3000 AND 5000 THEN 'HIGH SAL'
WHEN SAL BETWEEN 1000 AND 3000 THEN 'MEDIUM SAL'
ELSE 'LOW SAL'
END RESULT
FROM EMP ;
/
SELECT ENAME,SAL,
CASE
WHEN SAL BETWEEN 0 AND 999 THEN 'GRADE1'
WHEN SAL BETWEEN 1000 AND 2999 THEN 'GRADE2'
WHEN SAL BETWEEN 3000 AND 4999 THEN 'GRADE3'
ELSE 'GRADE4'
END CASE_RESULT
FROM EMP;
/
SELECT EMPNO,
ENAME,
JOB,
SAL,
CASE
WHEN SAL BETWEEN 3000 AND 5000 THEN 'MANAGER'
WHEN SAL BETWEEN 1000 AND 2999 THEN 'EMPLOYEES'
ELSE 'CLERK'
END
FROM EMP;
/
SELECT ENAME,JOB,SAL,MGR,
CASE WHEN MGR IS NULL THEN 'PRESIDENT'
WHEN JOB LIKE 'CLE%' THEN 'HR TEAM'
WHEN JOB LIKE 'SALES%' THEN 'FINANCE TEAM'
ELSE 'OTHER TEAMS'
END CASE_RESULT
FROM EMP;
/
SELECT UPPER(ENAME)UPPER,
LOWER(JOB)LOWER,
INITCAP(ENAME) INITCAP,
LENGTH(ENAME) LENGTH,
ENAME||' ITS WORKING AS A'||JOB AS CONCAT,
REVERSE(ENAME) REVERSE,
LTRIM(ENAME) LTRIM,
RTRIM(ENAME) RTRIM,
TRIM(ENAME) TRIM,
LPAD(ENAME,10,'*')LPAD,
RPAD(ENAME,10,'*') RPAD,
TRANSLATE(ENAME,'K','I') TRANSLATE,
SUBSTR(ENAME,1,1)||SUBSTR(ENAME,-1,1)SUBSTR,
DECODE(DEPTNO,10,'TEN',20,'TWENTY',DEPTNO) DECODE_RESULT,
CASE
WHEN DEPTNO=10 AND JOB='MANAGER' THEN 'MGR'
WHEN DEPTNO=20 AND JOB='ANALYST' THEN 'ALS'
WHEN DEPTNO=30 AND JOB='SALESMAN' THEN 'SMAN'
ELSE JOB
END CASE_RESULT
FROM EMP;
SUBSTR(S,M,N):
**************
-->It is used to display the set of characters in a gven string.
-->It is used to extract a particular portion of a string.
S--String
M--Position
N--No.Of.Characters
SYNTAX:
********
SUBSTR(STRING1,<STARTING POSITION OF CHAR.>,<LENGTH OF CHAR's>)
EX:
***
SELECT SUBSTR('ORACLE',1,3) FROM DUAL;
SELECT SUBSTR('ORACLE',2,5) FROM DUAL;
SELECT SUBSTR('ORACLE',4,2) FROM DUAL;
SELECT SUBSTR('ORACLE',4,4) FROM DUAL;
SELECT SUBSTR('ORACLE',6,2) FROM DUAL;
SELECT SUBSTR('ORACLE',2) FROM DUAL;
SELECT SUBSTR('ORACLE SERVER',0,4) FROM DUAL;
SELECT SUBSTR('ORACLE SERVER',-1) FROM DUAL;
SELECT SUBSTR('ORACLE SERVER',-9,5) FROM DUAL;
SELECT SUBSTR('ORACLE',-1,3) FROM DUAL;
SELECT SUBSTR('ORACLE',-1,2) FROM DUAL;
SELECT SUBSTR('ORACLE',-2,5) FROM DUAL;
SELECT SUBSTR('ORACLE',-3,2) FROM DUAL;
SELECT ENAME,SUBSTR(ENAME,1,4),ENAME,SUBSTR(ENAME,1,LENGTH(ENAME)) FROM EMP;
INSTR(S,C,M,N):
***************
-->It is used to find the postion of a given character.
-->Returns Occurence postion of a character in the given string
S--String
C--Character --which is the character we wnat find out the position
M--Position
N--Occurance --we want find out the occurance(repeated characters)
SYNTAX:
*******
INSTR(STRING1,STRING2,<STARTING POSITION OF CHAR.>,<OCCURENCE POSITION OF CHAR.>)
EX:
***
SELECT INSTR('HELLO WELCOME','O') FROM DUAL;
SELECT INSTR('HELLO WELCOME','Z') FROM DUAL;-----> 0
SELECT INSTR('HELLO WELCOME','O',1,2) FROM DUAL;-----11
SELECT INSTR('HELLO WELCOME','E',5,2) FROM DUAL;-------13
SELECT INSTR('HELLO WELCOME','E',1,4) FROM DUAL;--------0
SELECT INSTR('HELLO WELCOME','E',-1,3) FROM DUAL;--------2
SELECT INSTR('HELLO WELCOME','L',-4,3) FROM DUAL;-------3
SELECT INSTR('HELLO WELCOME','L',-6,3) FROM DUAL;----------0
SELECT INSTR('WELCOME','C',1) FROM DUAL; --4
SELECT INSTR('WELCOME','C',2) FROM DUAL; --4
SELECT INSTR('WELCOME','C',3) FROM DUAL; --4
SELECT INSTR('WELCOME','C',4) FROM DUAL; --4
SELECT INSTR('WELCOME','C',5) FROM DUAL; --0
SELECT INSTR('WELCOME','C',15) FROM DUAL; --0
SELECT INSTR('ORACLE SERVER','O',1,1) FROM DUAL; --1
SELECT INSTR('ORACLE SERVER','X',1,1) FROM DUAL; --0
SELECT INSTR('ORACLE SERVER','E',1,1) FROM DUAL; --6
SELECT INSTR('ORACLE SERVER','E',1,2) FROM DUAL; --9
SELECT INSTR('ORACLE SERVER','E',1,3) FROM DUAL; --12
SELECT INSTR('ORACLE SERVER','E',5,3) FROM DUAL; --12
SELECT INSTR('ORACLE SERVER','E',7,2) FROM DUAL; --12
SELECT INSTR('ORACLE SERVER','E',7,3) FROM DUAL; --0
SELECT INSTR('ORACLE SERVER','E',7) FROM DUAL; --9
SELECT INSTR('ORACLE SERVER','E') FROM DUAL; --6
SELECT INSTR('ORACLE SERVER','E',-1) FROM DUAL; --12
SELECT INSTR('ORACLE SERVER','E',-1,2) FROM DUAL; --9
DATE FUNCTONS:
**************
SYSDATE:
********
-->It is used to display the server system date.
EX:
***
SELECT SYSDATE FROM DUAL;
SELECT SYSDATE10 FROM DUAL;
SELECT SYSDATE-10 FROM DUAL;
CURRENT DATE:
*************
-->It is used to display the client system date.
EX:
***
SELECT CURRENT_DATE FROM DUAL;
ADD_MONTHS:
***********
-->It is used to add or subtract number of months for a given date.
SYNTAX:
*******
ADD_MONTHS(DATE,<NO.OF MONTHS>)
EX:
****
SELECT ADD_MONTHS(SYSDATE,6) FROM DUAL;
SELECT ADD_MONTHS(SYSDATE,-2) FROM DUAL;
SELECT HIREDATE,ADD_MONTHS(SYSDATE,1) FROM EMP;
MONTHS_BETWEEN():
*****************
-->It is used to display the number of months between two dates.
SYNTAX:
*******
MONTHS_BETWEEN(DATE1,DATE2)
EX:
***
SELECT MONTHS_BETWEEN('05-JAN-81','05-JAN-80') FROM DUAL;----- 12
SELECT MONTHS_BETWEEN('05-JAN-80','05-JAN-81') FROM DUAL;----- -12
SELECT MONTHS_BETWEEN(SYSDATE,HIREDATE) FROM EMP;
SELECT ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATE)) FROM EMP;
SELECT EMPNO,ENAME,SAL,HIREDATE,MONTHS_BETWEEN(SYSDATE,HIREDATE)MON_EXP,MONTHS_BETWEEN(SYSDATE,HIREDATE)/12 YEAR_EXP,ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12)ROUND_EXP
FROM EMP;
SELECT EMPNO,ENAME,JOB,SAL,HIREDATE,
MONTHS_BETWEEN(SYSDATE,HIREDATE),
MONTHS_BETWEEN(SYSDATE,HIREDATE)/12,
round(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),
CEIL(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) CEIL,
FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) FLOOR
MONTHS_BETWEEN(HIREDATE,SYSDATE),
MONTHS_BETWEEN(HIREDATE,SYSDATE)/12,
round(MONTHS_BETWEEN(HIREDATE,SYSDATE)/12)
FROM EMP;
NOTE: DATE1 IS ALWAYS GREATER THAN DATE2 OTHERWISE ORACLE RETURNS NAGATIVE VALUE.
NEXT_DAY():
**********
-->It is used to display the next day date based on the format.
SYNTAX:
*******
NEXT_DAY(DATE,'<DAY NAME>')
EX:
***
SELECT NEXT_DAY(SYSDATE,'SUN') FROM DUAL;
LAST_DAY():
***********
-->it is used to display the last day of the month.
SYNTAX:
*******
LAST_DAY(DATE)
EX:
***
SELECT LAST_DAY(SYSDATE) FROM DUAL;
SELECT LAST_DAY(HIREDATE) FROM EMP;
TRUNC:
******
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'YEAR'),'DD-MON-YYYY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'YYYY'),'DD-MON-YYYY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'YYYY'),'DD-MON-YY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'MON'),'DD-MON-YY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'MM'),'DD-MON-YY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'MONTH'),'DD-MON-YY HH:MI:SS') FROM DUAL;
EXTRACT:
********
-->It is used to EXTRACT a portion of a date value.
SYNTAX:
*******
EXTRACT ((YEAR |MONTH |DAY |HOUR |MINUTE|SECOND | TIMEZONE_HOUR | TIMEZONE_MNUTE | TIMEZONE_REGION | TIMEZONE_ABBREVATION) FROM DATE)
SELECT SYSDATE,EXTRACT(DAY FROM SYSDATE) FROM DUAL
SELECT SYSDATE,EXTRACT(MONTH FROM SYSDATE) FROM DUAL
SELECT SYSDATE,EXTRACT(YEAR FROM SYSDATE) FROM DUAL
SELECT EXTRACT(HOUR FROM TIMESTAMP '2021-07-20 17:48:20') EXTRACT_VALUE FROM DUAL;
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2021-07-20 17:48:20') EXTRACT_VALUE FROM DUAL;
SELECT EXTRACT(SECOND FROM TIMESTAMP '2021-07-20 17:48:20') EXTRACT_VALUE FROM DUAL;
DATE FORMATS:
*************
D--Name of day in a week
DD --Name of day in a month
DDD--Name of day in a year
DY--First 3 characters of the day.
dy--First 3 characters of the day.
DAY--Complete characters of the day.
Day--Complete characters of the day.
day--Complete characters of the day.
MM--Number of the months in the year
MON--First three characters of the month.
mon--First three characters of the month.
MONTH--Complete characters of the month.
Month--Complete characters of the month.
month--Complete characters of the month.
Y--Last digit of the year
YY--Last two digits of the year.
YYY--Last three digits of the year.
YYYY--Four digits of the year.
HH--An hour of the day.
HH24--24 hours format.
Mi--Minutes of the year
SS--Seconds of the year
FS--Fraction of seconds
W--Week of the month
WW--week of the year
Q--Quarter of the year
YEAR FORMATS:
---------------------------
YYYY - 2022
YY - 22
YEAR - TWENTY TWENTY TWO
CC - CENTUARY 22
AD / BC - AD YAER / BC YEAR
MONTH FORMAT:
----------------------------
MM - MONTH NUMBER
MON - FIRST THREE CHAR FROM MONTH SPELLING
MONTH - FULL NAME OF MONTH
DAY FORMATS:
-------------------------
DDD - DAY OF THE YEAR.
DD - DAY OF THE MONTH.
D - DAY OF THE WEEK
SUN - 1
MON - 2
TUE - 3
WEN - 4
THU - 5
FRI - 6
SAT - 7
DAY - FULL NAME OF THE DAY
DY - FIRST THREE CHAR's OF DAY SPELLING
QUATER FORMAT:
----------------------------
Q - ONE DIGIT QUATER OF THE YEAR
1 - JAN - MAR
2 - APR - JUN
3 - JUL - SEP
4 - OCT - DEC
WEEK FORMAT:
--------------------------
WW - WEEK OF THE YEAR
W - WEEK OF MONTH
TIME FORMAT:
-------------------------
HH - HOUR PART
HH24 - 24 hrs FROMAT
MI - MINUTE PART
SS - SECONDS PART
AM / PM - AM TME (OR) PM TIME
Conversion Functions:
*********************
TO_CHAR():
**********
-->It is used to convert system format into user format.
-->DATE TYPE TO CHAR TYPE TO DISPLAY DATE IN DIFFERENT FROMAT.
-->It is used to convert the date value into the varchar2 data type.
-->It is used to convert the number into character and also it converts the date into character.
SYNTAX:
********
TO_CHAR(DATE,[<FORMAT>])
EX:
***
SELECT SYSDATE FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'Day') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYYY YY YEAR CC AD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'MM MON MONTH') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'mm mon month') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DDD DD D DAY DY') FROM DUAL;
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'FMDAY')='FRIDAY';
SELECT TO_CHAR(SYSDATE,'Q') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'WW W') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'HH:MI:SS AM') FROM DUAL;
SELECT TO_CHAR(12346,'99,99,999.99')FROM DUAL;
SELECT 1234,TO_CHAR(1234,'9999D99')FROM DUAL; --decimal indicator(It return specified position of the decimal character)
SELECT SAL,TO_CHAR(SAL,'9999D99') FROM EMP;
SELECT TO_CHAR(5634,'9.9EEEE') FROM DUAL; --(It returns a numeric value using scientific notation)
SELECT TO_CHAR(1234567,'99G99G9999') FROM DUAL; --(It returns the specified of the group seperator)
SELECT TO_CHAR(SAL,'9G999') FROM EMP;
SELECT TO_CHAR(1234,'L9999') FROM DUAL; --It returns the specified position of the local currency symbol
SELECT SAL,TO_CHAR(SAL,'L99999') FROM EMP;
SELECT SAL,TO_CHAR(SAL,'L99G999D99','NLS_CURRENCY=RS') FROM EMP;
SELECT -20000,TO_CHAR(-20000,'L99G999D99PR')FROM DUAL;
SELECT SAL,COMM,COMM-SAL,TO_CHAR(COMM-SAL,'L9999PR') FROM EMP;
SELECT TO_CHAR(2000,'9999S') FROM DUAL;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DD MON YYYY') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DD MON YEAR') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DD MONTH YEAR') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DDTH MON YEAR') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DDSPTH MONTH YEAR') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'FMDDSPTH MON YEAR') FROM EMP;
SELECT TO_CHAR(COMM-SAL,'S99999') FROM EMP;
SELECT TO_CHAR(COMM-SAL,'99999S') FROM EMP;
--TO DISPLAY EMPLOYEE WHO ARE JOINED IN YEAR 1982 BY USING TO_CHAR() FUNCTION ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')=1982;
--TO DISPLAY EMPLOYEE WHO ARE JOINED IN YEAR 1980,1982,1987 BY USING TO_CHAR() FUNCTION ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY') IN(1980,1982,1987);
--TO DISPLAY EMPLOYEE WHO ARE JOINED IN FEB,MAY,DEC MONTHS BY USING TO_CHAR() ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MON') IN('FEB','MAY','DEC');
--TO DISPLAY EMPLOYEE WHO ARE JOINED IN FEB 1981 BY USING TO_CHAR() ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MMYYYY')='021981';
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MONYYYY')='FEB1981';
--TO DISPLAY EMPLOYEE WHO ARE JOINED ON "FRIDAY" BY USING TO_CHAR() ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'FMDAY')='FRIDAY';
--TO DISPLAY EMPLOYEE ON WHICH DAY EMPLOYEES ARE JOINED ?
SELECT ENAME||' '||'JOINED ON'||' '||TO_CHAR(HIREDATE,'DAY') FROM EMP;
--WHO ARE JOINED IN 2nd QUATER OF 1981 ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')='1981' AND TO_CHAR(HIREDATE,'Q')=2;
TO_DATE():
**********
-->It is used to convert user format into system format.
-->It is used to convert the string into date format.
SYNTAX:
********
TO_DATE(STRING[,FROMAT])
EX:
***
SELECT TO_DATE('08/MAY/2021') FROM DUAL;
SELECT TO_DATE('08-MAY-2021')+10 FROM DUAL;
SELECT TO_DATE(25,'DD') FROM DUAL;
SELECT TO_DATE('JANUARY 22,2021','MONTH DD,YYYY')"TO_DATE" FROM DUAL;
SELECT TO_DATE('FEB 22 2021','MON DD YYYY')"TO_DATE" FROM DUAL;
SELECT TO_DATE('16 05 2021','DD MM YYYY')"TO_DATE" FROM DUAL;
SELECT TO_CHAR(TO_DATE('16 05 2021','DD MM YYYY'),'DD-MON-YYYY')"TO_DATE" FROM DUAL;
CREATE TABLE DATE_TEST
(
A NUMBER,
B VARCHAR2(20),
C DATE
);
SELECT * FROM DATE_TEST;
/
INSERT INTO DATE_TEST VALUES(1,'A',SYSDATE);
/
INSERT INTO DATE_TEST VALUES(2,'B','20-OCT-22');
/
INSERT INTO DATE_TEST VALUES(3,'C','20/10/22'); --IT WILL THROW THE ERROR -- U CAN APPLY THE TO_DATE FUNCTION
/
INSERT INTO DATE_TEST VALUES(3,'C',TO_DATE('20/10/22','DD/MM/YY')); --SUCCESSFULLY INSERTED
/
TO_NUMBER:
**********
-->It is used to translate a value of char or varchar datatype to number format.
EX:
***
SELECT TO_NUMBER('20') FROM DUAL;
SELECT TO_NUMBER('200') + TO_NUMBER('700') FROM DUAL;
SELECT TO_NUMBER('4328','9999') FROM DUAL;
SELECT TO_NUMBER('$4328','$9999') FROM DUAL
SELECT TO_NUMBER('4328.60','9999.99') FROM DUAL;
SELECT TO_NUMBER('$65.619','L99.999') FROM DUAL;
SELECT TO_NUMBER('123,456,789','999,999,999') FROM DUAL;
MULTIPLE ROW FUNCTIONS OR AGGRAGATE FUNCTIONS:
*************************************************
THESE FUNCTIONS ARE RETURNS EITHER GROUP OF VALUES
(OR) A SINGLE VALUE.
SUM:
*******
--> It returns the sum value of column.
-->It is an aggregate function
-->It ignore null values.
-->it will gives the sum of the values to the specified function.
SYNTAX:
********
SUM(DISTINCT /ALL COLUMNS)
EX:
***
SELECT SUM(SAL) FROM EMP;
SELECT SUM(DISTINCT SAL) FROM EMP;
SELECT SUM(SAL) FROM EMP WHERE JOB='CLERK';
SELECT SUM(COMM),SUM(DISTINCT COMM) FROM EMP;
AVG:
******
-->It will give the average value.
-->It returns the average value of column.
-->It ignore null values.
SYNTAX:
*******
AVG(DISTINCT /ALL COLUMNS)
EX:
****
SELECT AVG(SAL) FROM EMP;
SELECT AVG(DISTINCT SAL) FROM EMP;
SELECT AVG(SAL) FROM EMP WHERE DEPTNO=10;
SELECT AVG(COMM),AVG(DISTINCT COMM) FROM EMP;
MIN():
******
-->It will give the minimum of the values of the specified column.
-->It ignores null values.
SYNTAX:
*******
MIN(DISTINCT /ALL COLUMNS)
EX:
****
SELECT MIN(HIREDATE) FROM EMP;
SELECT MIN(SAL),MIN(DISTINCT SAL) FROM EMP;
SELECT MIN(HIREDATE) FROM EMP WHERE JOB='MANAGER';
SELECT MIN(COMM) FROM EMP;
MAX:
*****
-->It will give the maximum of the values of the specified column.
-->It ignores null values.
SYNTAX:
*******
MAX(DISTINCT /ALL COLUMNS)
EX:
****
SELECT MAX(SAL),MAX(DISTINCT SAL) FROM EMP;
SELECT MAX(COMM),MAX(DISTINCT COMM) FROM EMP;
COUNT():
----------------
-->It will gives the number of rows in the specified column.
-->If '*' is used to return all rows,including duplicates and nulls.
--> THREE TYPES,
i) COUNT(*)
ii) COUNT(<COLUMN NAME>)
iii) COUNT(DISTINCT <COLUMN NAME>)
COUNT(*):
----------------
--> COUNTING ALL ROWS (DUPLICATES & NULLS) IN A TABLE.
EX:
***
SELECT COUNT(*) FROM EMP;
COUNT(<COLUMN NAME>):
*********************
--> COUNTING ALL VALUES INCLUDING DUPLICATE VALUES BUT NOT NULL VALUES FROM A COLUMN.
EX:
***
SELECT COUNT(COMM) FROM EMP;
COUNT(DISTINCT <COLUMN NAME>):
******************************
--> COUNTING UNIQUE VALUES FROM A COLUMN.HERE "DISTINCT" KEYWORD IS ELIMINATING DUPLICATE VALUES.
EX:
****
SELECT COUNT(DISTINCT MGR) FROM EMP;
SELECT COUNT(DISTINCT COMM) FROM EMP;
GENERAL FUNCTIONS:
******************
USER:
*****
-->The purpose of USER function is this will return the name of the present session user(schema).
-->it returns current user name.
SYNTAX:
*******
USER
EX:
***
SELECT USER FROM DUAL;
UID:
****
-->The purpose of UID function is used to find the user id value for the current session.
SYNTAX:
*******
UID
EX:
***
SELECT UID FROM DUAL;
SELECT USER,UID FROM DUAL;
USERENV('parameters'):
**********************
The parameter list of USERENV is shown in the below table.
Parameter: use of parameter value
*********** ******************************************
LANG Returns ISO abbrevation language name.
LANGUAGE Returns the language and territory of the current session.
SESSIONID Returns the auditing sesiion number.
TERMINAL Returns the operating system identifier of the current session
EX:
***
SELECT USERENV('LANG') FROM DUAL;
SELECT USERENV('LANGUAGE') FROM DUAL;
SELECT USERENV('SESSIONID') FROM DUAL;
SELECT USERENV('TERMINAL') FROM DUAL;
GREATEST:
**********
-->It is used to find the greatest value in the available or provided expression values.
SYNTAX:
*******
GREATEST (expression_list_seperated_comma)
EX:
***
SELECT GREATEST(10,4,9,20) FROM DUAL;
SELECT GREATEST('A','E','I','O','U') FROM DUAL;
SELECT GREATEST(TO_DATE('11-JAN-1981','DD-MON-YYYY'),TO_DATE('16-DEC-1982','DD-MON-YYYY'),TO_DATE('12-MAR-1980','DD-MON-YYYY')) "GREATEST" FROM DUAL;
LEAST:
*****
-->It is used to find the least value in the available or provided expression values.
SYNTAX:
*******
LEAST(expression_list_seperated_comma)
EX:
***
SELECT LEAST(12,34,77,8,66) "LEAST" FROM DUAL;
SELECT LEAST(TO_DATE('11-JAN-1981','DD-MON-YYYY'),TO_DATE('16-DEC-1982','DD-MON-YYYY'),TO_DATE('12-MAR-1980','DD-MON-YYYY')) "LEAST" FROM DUAL;
NVL:
****
-->It is used to handle the null values
-->if exp1 is null return exp2 else exp1
SYNTAX:
********
NVL(exp1,expr2)
EX:
****
SELECT NVL('A','B') FROM DUAL;
SELECT NVL(NULL,'B') FROM DUAL;
SELECT EMPNO,ENAME,JOB,SAL,COMM,NVL(SAL,0),NVL(COMM,0) FROM EMP;
SELECT EMPNO.ENAME,JOB,SAL,COMM,NVL(SAL,0),NVL(COMM,0),SAL+COMM,SAL+NVL(COMM,0) FROM EMP;
--How to check the total table size?
SELECT SUM(BYTES) / 1024 FROM DBA_SEGMENTS WHERE SEGMENT_NAME='EMP'
NVL2:
*****
-->If exp1 is null it returns exp3,if exp1 is not null it returns exp2
SYNTAX:
*******
NVL2(EXP1,EXP2,EXP3)
EX:
***
SELECT NVL2('A','B','C') FROM DUAL;
SELECT NVL2(NULL,'B','C') FROM DUAL;
SELECT NVL2('A',NULL,'C') FROM DUAL;
SELECT ENAME,JOB,NVL2(COMM,SAL+COMM,SAL) NET FROM EMP;
SELECT ENAME,JOB,COMM,SAL+COMM,SAL,
NVL2(COMM,SAL+COMM,SAL)
FROM EMP;
NULLIF:
*******
-->If exp1 and exp2 results are same it returns null value otherwise it returns exp1 result.
SYNTAX:
******
NULLIF(EXPR1,EXPR2)
EX:
***
SELECT NULLIF('A','A') FROM DUAL;
SELECT NULLIF('A','B') FROM DUAL;
SELECT NULLIF('','B') FROM DUAL;
SELECT NULLIF('A',NULL) FROM DUAL;
SELECT NULLIF(100,50*2),NULLIF(200,15*9),NULLIF(600,300+300) FROM DUAL;
SELECT ENAME,LENGTH(ENAME) EXPR1,JOB,LENGTH(JOB)EXPR2,
NULLIF(LENGTH(ENAME),LENGTH(JOB))NULLIF
FROM EMP
COALESCE:
**********
-->It picks the first not null values.
SYNTAX:
*******
COALESCE(EXPR1,EXPR2,EPR3,...,EXPRN);
EX:
***
SELECT COALESCE('A','B','C','D','E') FROM DUAL;
SELECT COALESCE('B','C','D','E') FROM DUAL;
SELECT COALESCE('C','D','E') FROM DUAL;
SELECT COALESCE(NULL,NULL,NULL,'D','E') FROM DUAL;
SELECT COALESCE(100+NULL,128-NULL+1000,12*NULL,268,2120,3281) FROM DUAL;
SELECT ENAME,JOB,COMM*2,SAL*1.5,
COALESCE(COMM*2,SAL*1.5) BONUS FROM EMP;
SQL Functions:
**********
-->To perform a task and must return value.
-->Oracle supports two types of functons.They are
a)Pre-Define/Built In Functions (Use in SQL AND PL/SQL)
b)User Define Functions (Use in PL/SQL)
Pre-Define Functions:
*********************
-->These are classified into two categories.
Single Row Functions (Scalar Functions)
Multiple Row Functions (Grouping Functions)
Single Row Functions:
*********************
-->These functions are return a single row or group of values.
a)Numeric or Number Functions.
b)String Functions
c)Date Functions
d)Conversion Functions
Numeric Functions:
******************
-->Numeric functions are used to perform operations on numbers.
-->They accept numeric values as input and return numeric values as output.
a)POWER(M,N):
*************
-->It gives the power of given expression.
SYNTAX:
********
POWER(M,N)
M-->VALUE
N-->EXPONENT
EX:
***
SELECT POWER(20,2) FROM DUAL;
SELECT POWER(2,4),POWER(4,8),POWER(0,0),POWER(NULL,NULL) FROM DUAL;
B)SQRT(M)
*********
-->It gives suare root of given number.
-->Input value must be positive.
EX:
***
SELECT SQRT(9) FROM DUAL;
SELECT SQRT(2),SQRT(8),SQRT(0),SQRT(NULL) FROM DUAL;
C)MOD():
********
-->gives remainder after M/N operation.
SYNTAX:
*******
MOD(M,N)
M-->VALUE
N-->DIVISOR
EX:
***
SELECT MOD(5,2) FROM DUAL;
SELECT MOD(1,5),MOD(5,2),MOD(0,0),MOD(NULL,NULL) FROM DUAL;
D) CEIL(VALUE):
***************
-->It displays next highest value.
-->It returns a value which is greater than or equal to given value.
SYNTAX:
*******
CEIL(NUMBER)
EX:
***
SELECT CEIL(8) FROM DUAL;
SELECT CEIL(6.2) FROM DUAL;
SELECT CEIL(12.6) FROM DUAL;
SELECT CEIL(4.4),CEIL(-5.1),CEIL(0),CEIL(NULL) FROM DUAL;
SELECT CEIL(2),CEIL(2.01),CEIL(23.65),CEIL(245.21),CEIL(4567.78),CEIL(-23.1),CEIL(-456.90),CEIL(-3451.091) FROM DUAL;
SELECT CEIL(-123.45),CEIL(+123.45),CEIL(123.45) FROM DUAL;
SELECT CEIL(-123),CEIL(+123),CEIL(123) FROM DUAL;
CREATE TABLE XX_CEIL(
FEE NUMBER
);
/
INSERT INTO XX_CEIL VALUES (14);
/
INSERT INTO XX_CEIL VALUES (19.8);
/
INSERT INTO XX_CEIL VALUES (100.01);
/
INSERT INTO XX_CEIL VALUES (148.92);
/
INSERT INTO XX_CEIL VALUES (1120.67);
/
COMMIT;
/
SELECT FEE,CEIL(FEE) FROM XX_CEIL;
SELECT INVOICE_AMOUNT,CEIL(INVOICE_AMOUNT)
FROM AP_INVOICES_ALL;
E)FLOOR():
**********
-->It displays the next lowest value.
-->The purpose of FLOOR function is it returns the integer values which is equals to the specified number or less than the specified number.
SYNTAX:
*******
FLOOR(NUMBER)
EX:
***
SELECT FLOOR(12.85) FROM DUAL;
SELECT FLOOR(31.1) FROM DUAL;
SELECT FLOOR(18.980) FROM DUAL;
SELECT FLOOR(1234.47) FROM DUAL;
SELECT FLOOR(-123.45),FLOOR(+123.45),FLOOR(123.45) FROM DUAL;
SELECT FLOOR(-123),FLOOR(+123),FLOOR(123) FROM DUAL;
SELECT FLOOR(2),FLOOR(2.90),FLOOR(13.12),FLOOR(45.7),FLOOR(980.213),FLOOR(5678.213),FLOOR(-123),FLOOR(-123.21),FLOOR(-1456.765) FROM DUAL;
SELECT FEE,FLOOR(FEE)
FROM XX_CEIL;
SELECT FEE,FLOOR(FEE),CEIL(FEE)
FROM XX_CEIL
SELECT INVOICE_AMOUNT,FLOOR(INVOICE_AMOUNT),CEIL(INVOICE_AMOUNT)
FROM AP_INVOICES_ALL;
F)ROUND(M,N):
*************
-->It rounds the value upto given number of position.
-->If check the condition.
-->Rounds value to some specified decimal.
SYNTAX:
*******
ROUND(NUMBER,[DECIMAL PLACES])
EX:
***
SELECT ROUND(12.234) FROM DUAL; --12
SELECT ROUND(12.234,2) FROM DUAL; --12.23
SELECT ROUND(12.567) FROM DUAL; --13
SELECT ROUND(123.567,2) FROM DUAL;
SELECT ROUND(123.567,-1) FROM DUAL;
SELECT ROUND(123.567,-2) FROM DUAL;
SELECT ROUND(123.567,-3) FROM DUAL;
SELECT ROUND(13.875),ROUND(456.987),ROUND(45.356) FROM DUAL;
/
SELECT ROUND(12.65,1) FROM DUAL;
/
SELECT ROUND(45.243,1) FROM DUAL;
/
SELECT ROUND(48.799,2) FROM DUAL;
/
SELECT ROUND(678.8597,3) FROM DUAL;
/
SELECT ROUND(1234.98),ROUND(778.34),ROUND(45.65),ROUND(678.21,1),ROUND(765.989,2),ROUND(6789.7654,3) FROM DUAL;
/
1235 778 46 678.2 765.99 6789.765
/
SELECT ROUND(123.45,-1) FROM DUAL;
/
SELECT ROUND(126.45,-1) FROM DUAL;
/
SELECT ROUND(18.97,-1) FROM DUAL;
/
SELECT ROUND(151.89,-2) FROM DUAL;
/
SELECT ROUND(10022.4,1) FROM DUAL;
/
SELECT INVOICE_AMOUNT,ROUND(INVOICE_AMOUNT),ROUND(INVOICE_AMOUNT,1)
FROM AP_INVOICES_ALL;
SELECT FEE,ROUND(FEE)
FROM XX_CEIL;
SELECT ROUND(123.45),ROUND(123.45,0),ROUND(123.45,1),ROUND(123.45,2),ROUND(123.45,3) FROM DUAL;
SELECT ROUND(123.45,-1),ROUND(123.45,-2),ROUND(123.45,-3),ROUND(123.45,-4),ROUND(123.45,-5) FROM DUAL
G)TRUNC(M,N):
*************
-->Its work similar to that of round,but it won't check the condition.
-->Return a number with some digits truncated.
SYNTAX:
*******
TRUNC(NUMBER,DECIMAL PLACES)
EX:
****
SELECT TRUNC(12.678) FROM DUAL;
SELECT TRUNC(12.678,2) FROM DUAL;
SELECT ROUND(12.67,2),TRUNC(12.67,2) FROM DUAL;
SELECT TRUNC(123.4),TRUNC(123.45,0),TRUNC(123.45,1),TRUNC(123.45,2),TRUNC(123.45,3) FROM DUAL;
SELECT TRUNC(123.45,-0),TRUNC(123.45,-1),TRUNC(123.45,-2),TRUNC(123.45,-3),TRUNC(123.45,-4) FROM DUAL;
/
SELECT TRUNC(12.78),TRUNC(100.78),TRUNC(123.45),TRUNC(1234.80),TRUNC(456.45) FROM DUAL;
/
SELECT TRUNC(12.78,1),ROUND(12.78,1),TRUNC(100.78,1),ROUND(100.78,1),TRUNC(123.456,2),ROUND(123.456,2),TRUNC(1234.987,3),ROUND(1234.987,3),TRUNC(456.4589,3) FROM DUAL;
/
SELECT INVOICE_AMOUNT,CEIL(INVOICE_AMOUNT),FLOOR(INVOICE_AMOUNT),ROUND(INVOICE_AMOUNT),TRUNC(INVOICE_AMOUNT) FROM AP_INVOICES_ALL;
H)ABS:
********
-->It gives the absolute value of n.
-->If n is -ve it converts to positive.
SYNTAX:
*******
ABS(NUMBER)
EX:
***
SELECT ABS(-12) FROM DUAL;
SELECT ABS(10),ABS(-5),ABS(0),ABS(NULL) FROM DUAL;
SELECT ENAME,SAL,COMM,ABS(COMM-SAL) FROM EMP;
I)SIGN:
********
-->If n is +ve gives 1
-->If n is -ve gives -1
-->If n is 0 gives 0
SYNTAX:
*******
SIGN(NUMBER)
EX:
***
SELECT SIGN(2*9) FROM DUAL;
SELECT SIGN(9*-2) FROM DUAL;
SELECT SIGN(8-4*2) FROM DUAL;
SELECT SAL,SIGN(SAL) FROM EMP;
SELECT COMM-SAL,SIGN(COMM-SAL) FROM EMP;
SELECT COMM,SIGN(COMM) FROM EMP;
STRING FUNCTIONS OR CHARACTER FUNCTIONS:
****************************************
-->String or Character functions are used to manipulate text strings.They accept strngs or characters as input and return both character and number values as output.
ASCII(C)
**********
EX:
***
SELECT ASCII('A') FROM DUAL;
SELECT ASCII('a') FROM DUAL;
SELECT ASCII('0') FROM DUAL;
UPPER():
********
-->It is used to convert the string into upper or capital characters.
SYNTAX:
********
UPPER(STRING)
EX:
***
SELECT UPPER('abcd') FROM DUAL;
SELECT UPPER('oracle') FROM DUAL;
SELECT UPPER('ORACLE') FROM DUAL;
SELECT UPPER('computer')FROM DUAL;
SELECT ENAME,UPPER(ENAME) FROM EMP;
/
select vendor_name,upper(vendor_name)
from ap_suppliers;
/
select object_name,upper(object_name)
from dba_objects;
/
select item_description,upper(item_description)
from po_lines_all;
LOWER():
********
-->It is used to convert the strng into lower characters.
SYNTAX:
*******
LOWER(STRING)
EX:
***
SELECT LOWER('ORACLE') FROM DUAL;
SELECT ENAME,LOWER(ENAME) FROM EMP;
SELECT INVOICE_CURRENCY_CODE,LOWER(INVOICE_CURRENCY_CODE)
FROM AP_INVOICES_ALL
/
DROP TABLE EMP1;
/
CREATE TABLE EMP1 AS SELECT * FROM EMP;
/
UPDATE EMP1 SET ENAME=LOWER(ENAME) WHERE JOB='SALESMAN';
/
XOMMIT;
/
SELECT * FROM EMP1 WHERE JOB='SALESMAN';
/
--To check the DATABASE
--The data has converted into lower case data after apply the lower function
INITCAP():
**********
-->It is used to convert the first character into upper character in a given strng.
SYNTAX:
*******
INITCAP(STRING)
EX:
***
SELECT INITCAP('oracle') FROM DUAL;
SELECT INITCAP('oraCLE') FROM DUAL;
SELECT INITCAP('x y z') FROM DUAL;
SELECT INITCAP('xy z p qr') FROM DUAL;
SELECT ENAME,INITCAP(ENAME) FROM EMP;
select party_type,initcap(party_type)
from hz_parties;
LENGTH():
*********
-->It is used to display the number of characters in a given string.
SYNTAX:
*******
LENGTH(STRING)
EX:
***
SELECT LENGTH('ORACLE') FROM DUAL;
SELECT LENGTH(ENAME) FROM EMP;
SELECT LENGTH('ASDFGHJUIL%)(^JIO') FROM DUAL;
SELECT LENGTH('ASDEFRGT:%"12343098**') FROM DUAL;
SELECT ENAME,LENGTH(ENAME) FROM EMP;
SELECT * FROM EMP WHERE LENGTH(ENAME)=4;
/
SELECT ITEM_DESCRIPTION,LENGTH(ITEM_DESCRIPTION)
FROM PO_LINES_ALL;
/
REVERSE():
*********
-->It is used to reverse the given string.
SYNTAX:
*******
REVERSE(STRING)
EX:
***
SELECT REVERSE('ORACLE') FROM DUAL;
SELECT REVERSE(ENAME) FROM EMP;
SELECT ENAME,REVERSE(ENAME) FROM EMP;
SELECT * FROM EMP WHERE REVERSE(ENAME)=4;
CONCAT():
*********
-->It is used to merge the two strings and we have to use '||' symbol while merge the two strings.
SYNTAX:
********
CONCAT(STRING1,STRING2)
EX:
***
SELECT CONCAT('ORACLE','PVT LINMITED') FROM DUAL;
SELECT CONCAT('ASDF','PQRS') FROM DUAL;
SELECT CONCAT('ORACLE','SERVER') FROM DUAL;
SELECT 'ORACLE'||'PVT LIMITED' FROM DUAL;
SELECT CONCAT('ORACLE','INDIA','LTD') FROM DUAL;
--It will throw the error (Invalid number of arguments)
SELECT CONCAT(CONCAT('ORACLE','INDIA'),'LTD') FROM DUAL;
--To overcome the above issue by using || operator.
SELECT 'ORACLE'||'INDIA'||'LTD' FROM DUAL;
/
select 'oracle'||'apps'||'india' from dual;
/
select 'oracle'||' '||'apps'||' '||'india' from dual;
/
SELECT 'ORACLE'||' '||'INDIA'||' '||'LTD' FROM DUAL;
/
SELECT ENAME||' ITS WORKING AS '||JOB
FROM EMP;
LTRIM():
********
-->It is used to remove the character from left end of the given string,if the character is found.
-->To remove unwanted spaces or unwanted characters from left side of the given string.
SYNTAX:
********
LTRIM(STRING1[,STRING2])
EX:
***
SELECT LTRIM(' ORACLE') FROM DUAL;
SELECT LTRIM('ORACLE','O') FROM DUAL;
SELECT LTRIM('ORACLE','o') FROM DUAL;
SELECT LTRIM('ORACLE','ORA') FROM DUAL;
SELECT LTRIM('OOOOOORACLE','O') FROM DUAL;
SELECT LTRIM('OOOOOORACLEOOOOINDIAOOOO','O') FROM DUAL;
SELECT LTRIM('OOOOORACLEOOOOINDIAOOOO','OO') FROM DUAL;
SELECT LTRIM('ORACLE','A') FROM DUAL;
SELECT LTRIM('XXXXXXORACLE','X') FROM DUAL;
SELECT LTRIM('123ORACLE','123') FROM DUAL;
SELECT LTRIM(ENAME) FROM EMP;
RTRIM():
********
-->It is used to remove the character from right end of the given string,if the character is found.
-->To remove unwanted spaces or unwanted characters from right side of the given string.
SYNTAX:
********
RTRIM(STRING1[,STRING2])
EX:
***
SELECT RTRIM('ORACLE','O') FROM DUAL;
SELECT RTRIM('ORACLE','CL') FROM DUAL;
SELECT RTRIM('ORACLE','CLE') FROM DUAL;
SELECT RTRIM('ORACLE ') FROM DUAL;
SELECT RTRIM('ORACLE','E') FROM DUAL;
SELECT RTRIM('ORACLE','e') FROM DUAL;
SELECT RTRIM('ORACLEXXXXXXX','X') FROM DUAL;
SELECT RTRIM(ENAME) FROM EMP;
SELECT RTRIM(LTRIM('XXXXXXORACLEXXX','X'),'X') FROM DUAL;
SELECT RTRIM(LTRIM('**********ORACLE***********','*'),'*') FROM DUAL;
SELECT LTRIM(RTRIM('**********ORACLE***********','*'),'*') FROM DUAL;
TRIM():
*******
-->It is used to remove the characters from both sides of a given string.
-->To remove unwanted spaces or unwanted characters from both sides of the given string.
SYNTAX:
*******
TRIM('TRIMMING CHAR' FROM 'STRING')
EX:
***
SELECT TRIM('X' FROM 'XXXXXXORACLEXXXX') FROM DUAL;
SELECT TRIM(BOTH 'X' FROM 'XXXXXXORACLEXXXX') FROM DUAL;
SELECT TRIM(' ORACLE') FROM DUAL;
SELECT TRIM(LEADING ' ' FROM ' ORACLE') FROM DUAL;
SELECT TRIM('ORACLE ') FROM DUAL;
SELECT TRIM(TRAILING ' ' FROM 'ORACLE ') FROM DUAL;
SELECT TRIM(' ORACLE ') FROM DUAL;
SELECT LTRIM(RTRIM('OOOOOORACLEOOOOOO','O'),'O') FROM DUAL;
SELECT LTRIM(RTRIM('OOOOOORACLEOOOOOO','o'),'o') FROM DUAL;
CREATE TABLE POW
(
SNAME VARCHAR2(20)
);
INSERT INTO POW VALUES(' ABC');
INSERT INTO POW VALUES('ABC ');
INSERT INTO POW VALUES(' ABC ');
COMMIT;
SELECT SNAME,LTRIM(SNAME),LENGTH(SNAME),LENGTH(LTRIM(SNAME)) FROM POW;
SELECT SNAME,RTRIM(SNAME),LENGTH(SNAME),LENGTH(RTRIM(SNAME)) FROM POW;
SELECT SNAME,TRIM(SNAME),LENGTH(SNAME),LENGTH(TRIM(SNAME)) FROM POW;
/
LPAD():
*******
-->It is used to add the character from left end.
-->-->The LPAD() function pads the left side of a string with a specific set of characters.
-->To fill a string with specific character on left side of the given string.
SYNTAX:
*******
EX:
****
SELECT LPAD('ORACLE',8,'*') FROM DUAL;
SELECT LPAD('ORACLE',10) FROM DUAL; --Third argument is optional.
SELECT LPAD('ORACLE',20,'*') FROM DUAL;
SELECT ENAME,LPAD(ENAME,10,'*') FROM EMP;
SELECT ENAME,LENGTH(LPAD(ENAME,10,'*')) FROM EMP;
RPAD():
*******
-->It is used to add the character from right end.
-->The RPAD() function pads the right side of a string with a specific set of characters.
-->To fill a string with specific character on right side of the given string.
SYNTAX:
*******
RPAD(STRING1,LENGTH,STRING2)
EX:
****
SELECT RPAD('ORACLE',8,'*') FROM DUAL;
SELECT ENAME,RPAD(ENAME,10,'*') FROM EMP;
SELECT ENAME,LENGTH(RPAD(ENAME,10,'*')) FROM EMP;
--The below query using both LPAD and RPAD
select rpad(lpad(ename,10,'*'),15,'*') from emp;
SELECT RPAD(LPAD('ORACLE','15','*'),'25','*') FROM DUAL;
/
Requirement O/P:LPAD(STRING1,LENGTH,STRING2)
****************
K**G
B***E
M****N
/
select rpad(substr('king',1,1),length('king')-1,'*')||substr('king',-1,1) from dual;
SELECT ENAME,RPAD(SUBSTR(ENAME,1,1),ROUND(LENGTH(ENAME)*2/2)-1,'*')||SUBSTR(ENAME,-1,1) RESULT FROM EMP;
/
TRANSLATE():
************
-->It is used to translate the character wise in a given string,if the character is found.
-->To translate a single character with another single character.
-->It is not posible to translate entire string.
SYNTAX:
*******
TRANSLATE(STRING1,STRING2,STRING3)
STRING1 --SOURCE STRING OR INPUT STRING
STRING2 --Which we want to replace
STRING3 --WHAT WE WANT TO TRANSLATE
EX:
***
SELECT TRANSLATE('WELCOME','W','A') FROM DUAL;
SELECT TRANSLATE('WELCOME','COME','PQRS') FROM DUAL;
SELECT TRANSLATE('ORACLE SERVER','OEL','123') FROM DUAL;
SELECT TRANSLATE('ORACLE SERVER','OEL','12') FROM DUAL;
SELECT ENAME,SAL,TRANSLATE(SAL,'0123456789','$b@gH*v#t%') SALARY FROM EMP;
SQL: 0=$,1=b,2=@,3=g,4=H,5=*,6=v,7=#,8=t,9=%
REPLACE():
**********
-->It is used to replace entire string.
-->To replace one string with another string.
-->It is not posible to replace more than one strng.
SYNTAX:
*******
REPLACE(STRING1,STRING2,STRING3)
STRING1 --SOURCE STRING OR INPUT STRING
STRING2 --Which we want to replace
STRING3 --WHAT WE WANT TO REPLACE
EX:
***
SELECT REPLACE('WELCOME TO ORACLE APPS','ORACLE','PLSQL') FROM DUAL;
SELECT REPLACE('E BUSINESS SOLUTIONS','BUSINESS','EBS') FROM DUAL;
SELECT REPLACE('HELLO','ELL','XYZ') FROM DUAL;
SELECT REPLACE('HELLO','L','ABC') FROM DUAL;
SELECT REPLACE('ORACLE SERVER','ER','12') FROM DUAL;
SELECT REPLACE('ORACLE SERVER','AE','12') FROM DUAL;
SELECT REPLACE('ORACLE INDIA LIMITED','INDIA','PVT') FROM DUAL;
SELECT ENAME,REPLACE(ENAME,'IN','AB') FROM EMP;
SELECT REPLACE('ORACLE INDIA LIMITED','ORACLE','GENPACT','INDIA','PVT','LIMITED','LTD') from dual;
--To overcome this issue we are using decode functions.
DECODE():
*********
-->It is used to replace morethan one string.
-->It works like as a if condition but it does not allow the relatonal operators.
SYNTAX:
********
DECODE( expression , compare_value, return_value, [,compare, return_value] ... [,default_return_value] )
EX:
***
/
DROP TABLE XX_STU_DATA;
/
CREATE TABLE XX_STU_DATA
(
SNO NUMBER,
SNAME VARCHAR2(20),
MARKS NUMBER(3),
RESULT VARCHAR2(20)
);
/
INSERT INTO XX_STU_DATA VALUES (1,'A',90,'P');
/
INSERT INTO XX_STU_DATA VALUES (2,'B',70,'P');
/
INSERT INTO XX_STU_DATA VALUES (3,'C',50,'P');
/
INSERT INTO XX_STU_DATA VALUES (4,'D',40,'P');
INSERT INTO XX_STU_DATA VALUES (5,'E',20,'F');
/
INSERT INTO XX_STU_DATA VALUES (6,'F',90,NULL);
/
COMMIT;
/
SELECT *
FROM XX_STU_DATA;
/
SELECT SNO,
SNAME,
MARKS,
RESULT,
DECODE(RESULT,'P','PASS','F','FAIL','NO RESULT') "RESULT"
FROM XX_STU_DATA;
/
SELECT ENAME,JOB,DECODE(JOB,'PRESIDENT','PRS','MANAGER','MGR','CLERK','CLK','SALESMAN','SLMAN',JOB) FROM EMP;
SELECT ENAME,DEPTNO,DECODE(DEPTNO,10,'TEN',20,'TWENTY',30,'THIRTY',DEPTNO) FROM EMP;
SELECT ENAME,SAL,DECODE(SAL,1000,'GRADE1',3000,'GRADE2','GRADE3')DECODE_RESULT FROM EMP;
/
SELECT PO_HEADER_ID,
SEGMENT1,
TYPE_LOOKUP_CODE,
DECODE(TYPE_LOOKUP_CODE,'STANDARD','STD','RFQ','REQUEST','BLANKET','BLK',TYPE_LOOKUP_CODE)
FROM PO_HEADERS_ALL;
/
CASE(when condition then result else default value)
***************************************************
-->It is used to replace more than one string by using relational operator.
SYNTAX:
*******
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
EX:
***
SELECT SNO,
SNAME,
MARKS,
RESULT,
CASE RESULT
WHEN 'P' THEN 'PASS'
WHEN 'F' THEN 'FAIL'
ELSE 'NO RESULT'
END "RESULT"
FROM XX_STU_TAB;
/
SELECT SNO,
SNAME,
RESULT,
MARKS,
CASE
WHEN RESULT='P' AND MARKS>=75 THEN 'DISTINCTION'
WHEN RESULT='P' AND MARKS>=60 AND MARKS<75 THEN 'FIRST CLASS'
WHEN RESULT='P' AND MARKS>=50 AND MARKS<60 THEN 'SECOND CLASS'
WHEN RESULT='P' AND MARKS>=35 AND MARKS<50 THEN 'THIRD CLASS'
WHEN RESULT IS NULL THEN 'FAIL'
ELSE 'FAIL'
END CASE_RESULT
FROM XX_STU_DATA;
/
SELECT JOB,DEPTNO,
CASE WHEN DEPTNO=10 AND JOB='MANAGER' THEN 'MGR'
WHEN DEPTNO=20 AND JOB='ANALYST' THEN 'ALS'
WHEN DEPTNO=30 AND JOB='SALESMAN' THEN 'SMAN'
ELSE JOB
END result
FROM EMP;
/
SELECT EMPNO,
ENAME,
SAL,
JOB,
CASE JOB
WHEN 'PRESIDENT' THEN 'PRS'
WHEN 'CLERK' THEN 'CLK'
WHEN 'MANAGER' THEN 'MGR'
ELSE JOB
END CASE_RESULT
FROM EMP
/
SELECT SAL,
CASE WHEN SAL BETWEEN 3000 AND 5000 THEN 'MANAGER'
WHEN SAL BETWEEN 1000 AND 3000 THEN 'EMPLOYEES'
WHEN SAL<960 THEN 'OFFICE BOYS'
END SALCASE
FROM EMP;
/
SELECT SAL,
CASE
WHEN SAL BETWEEN 3000 AND 5000 THEN 'HIGH SAL'
WHEN SAL BETWEEN 1000 AND 3000 THEN 'MEDIUM SAL'
ELSE 'LOW SAL'
END RESULT
FROM EMP ;
/
SELECT ENAME,SAL,
CASE
WHEN SAL BETWEEN 0 AND 999 THEN 'GRADE1'
WHEN SAL BETWEEN 1000 AND 2999 THEN 'GRADE2'
WHEN SAL BETWEEN 3000 AND 4999 THEN 'GRADE3'
ELSE 'GRADE4'
END CASE_RESULT
FROM EMP;
/
SELECT EMPNO,
ENAME,
JOB,
SAL,
CASE
WHEN SAL BETWEEN 3000 AND 5000 THEN 'MANAGER'
WHEN SAL BETWEEN 1000 AND 2999 THEN 'EMPLOYEES'
ELSE 'CLERK'
END
FROM EMP;
/
SELECT ENAME,JOB,SAL,MGR,
CASE WHEN MGR IS NULL THEN 'PRESIDENT'
WHEN JOB LIKE 'CLE%' THEN 'HR TEAM'
WHEN JOB LIKE 'SALES%' THEN 'FINANCE TEAM'
ELSE 'OTHER TEAMS'
END CASE_RESULT
FROM EMP;
/
SELECT UPPER(ENAME)UPPER,
LOWER(JOB)LOWER,
INITCAP(ENAME) INITCAP,
LENGTH(ENAME) LENGTH,
ENAME||' ITS WORKING AS A'||JOB AS CONCAT,
REVERSE(ENAME) REVERSE,
LTRIM(ENAME) LTRIM,
RTRIM(ENAME) RTRIM,
TRIM(ENAME) TRIM,
LPAD(ENAME,10,'*')LPAD,
RPAD(ENAME,10,'*') RPAD,
TRANSLATE(ENAME,'K','I') TRANSLATE,
SUBSTR(ENAME,1,1)||SUBSTR(ENAME,-1,1)SUBSTR,
DECODE(DEPTNO,10,'TEN',20,'TWENTY',DEPTNO) DECODE_RESULT,
CASE
WHEN DEPTNO=10 AND JOB='MANAGER' THEN 'MGR'
WHEN DEPTNO=20 AND JOB='ANALYST' THEN 'ALS'
WHEN DEPTNO=30 AND JOB='SALESMAN' THEN 'SMAN'
ELSE JOB
END CASE_RESULT
FROM EMP;
SUBSTR(S,M,N):
**************
-->It is used to display the set of characters in a gven string.
-->It is used to extract a particular portion of a string.
S--String
M--Position
N--No.Of.Characters
SYNTAX:
********
SUBSTR(STRING1,<STARTING POSITION OF CHAR.>,<LENGTH OF CHAR's>)
EX:
***
SELECT SUBSTR('ORACLE',1,3) FROM DUAL;
SELECT SUBSTR('ORACLE',2,5) FROM DUAL;
SELECT SUBSTR('ORACLE',4,2) FROM DUAL;
SELECT SUBSTR('ORACLE',4,4) FROM DUAL;
SELECT SUBSTR('ORACLE',6,2) FROM DUAL;
SELECT SUBSTR('ORACLE',2) FROM DUAL;
SELECT SUBSTR('ORACLE SERVER',0,4) FROM DUAL;
SELECT SUBSTR('ORACLE SERVER',-1) FROM DUAL;
SELECT SUBSTR('ORACLE SERVER',-9,5) FROM DUAL;
SELECT SUBSTR('ORACLE',-1,3) FROM DUAL;
SELECT SUBSTR('ORACLE',-1,2) FROM DUAL;
SELECT SUBSTR('ORACLE',-2,5) FROM DUAL;
SELECT SUBSTR('ORACLE',-3,2) FROM DUAL;
SELECT ENAME,SUBSTR(ENAME,1,4),ENAME,SUBSTR(ENAME,1,LENGTH(ENAME)) FROM EMP;
INSTR(S,C,M,N):
***************
-->It is used to find the postion of a given character.
-->Returns Occurence postion of a character in the given string
S--String
C--Character --which is the character we wnat find out the position
M--Position
N--Occurance --we want find out the occurance(repeated characters)
SYNTAX:
*******
INSTR(STRING1,STRING2,<STARTING POSITION OF CHAR.>,<OCCURENCE POSITION OF CHAR.>)
EX:
***
SELECT INSTR('HELLO WELCOME','O') FROM DUAL;
SELECT INSTR('HELLO WELCOME','Z') FROM DUAL;-----> 0
SELECT INSTR('HELLO WELCOME','O',1,2) FROM DUAL;-----11
SELECT INSTR('HELLO WELCOME','E',5,2) FROM DUAL;-------13
SELECT INSTR('HELLO WELCOME','E',1,4) FROM DUAL;--------0
SELECT INSTR('HELLO WELCOME','E',-1,3) FROM DUAL;--------2
SELECT INSTR('HELLO WELCOME','L',-4,3) FROM DUAL;-------3
SELECT INSTR('HELLO WELCOME','L',-6,3) FROM DUAL;----------0
SELECT INSTR('WELCOME','C',1) FROM DUAL; --4
SELECT INSTR('WELCOME','C',2) FROM DUAL; --4
SELECT INSTR('WELCOME','C',3) FROM DUAL; --4
SELECT INSTR('WELCOME','C',4) FROM DUAL; --4
SELECT INSTR('WELCOME','C',5) FROM DUAL; --0
SELECT INSTR('WELCOME','C',15) FROM DUAL; --0
SELECT INSTR('ORACLE SERVER','O',1,1) FROM DUAL; --1
SELECT INSTR('ORACLE SERVER','X',1,1) FROM DUAL; --0
SELECT INSTR('ORACLE SERVER','E',1,1) FROM DUAL; --6
SELECT INSTR('ORACLE SERVER','E',1,2) FROM DUAL; --9
SELECT INSTR('ORACLE SERVER','E',1,3) FROM DUAL; --12
SELECT INSTR('ORACLE SERVER','E',5,3) FROM DUAL; --12
SELECT INSTR('ORACLE SERVER','E',7,2) FROM DUAL; --12
SELECT INSTR('ORACLE SERVER','E',7,3) FROM DUAL; --0
SELECT INSTR('ORACLE SERVER','E',7) FROM DUAL; --9
SELECT INSTR('ORACLE SERVER','E') FROM DUAL; --6
SELECT INSTR('ORACLE SERVER','E',-1) FROM DUAL; --12
SELECT INSTR('ORACLE SERVER','E',-1,2) FROM DUAL; --9
DATE FUNCTONS:
**************
SYSDATE:
********
-->It is used to display the server system date.
EX:
***
SELECT SYSDATE FROM DUAL;
SELECT SYSDATE10 FROM DUAL;
SELECT SYSDATE-10 FROM DUAL;
CURRENT DATE:
*************
-->It is used to display the client system date.
EX:
***
SELECT CURRENT_DATE FROM DUAL;
ADD_MONTHS:
***********
-->It is used to add or subtract number of months for a given date.
SYNTAX:
*******
ADD_MONTHS(DATE,<NO.OF MONTHS>)
EX:
****
SELECT ADD_MONTHS(SYSDATE,6) FROM DUAL;
SELECT ADD_MONTHS(SYSDATE,-2) FROM DUAL;
SELECT HIREDATE,ADD_MONTHS(SYSDATE,1) FROM EMP;
MONTHS_BETWEEN():
*****************
-->It is used to display the number of months between two dates.
SYNTAX:
*******
MONTHS_BETWEEN(DATE1,DATE2)
EX:
***
SELECT MONTHS_BETWEEN('05-JAN-81','05-JAN-80') FROM DUAL;----- 12
SELECT MONTHS_BETWEEN('05-JAN-80','05-JAN-81') FROM DUAL;----- -12
SELECT MONTHS_BETWEEN(SYSDATE,HIREDATE) FROM EMP;
SELECT ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATE)) FROM EMP;
SELECT EMPNO,ENAME,SAL,HIREDATE,MONTHS_BETWEEN(SYSDATE,HIREDATE)MON_EXP,MONTHS_BETWEEN(SYSDATE,HIREDATE)/12 YEAR_EXP,ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12)ROUND_EXP
FROM EMP;
SELECT EMPNO,ENAME,JOB,SAL,HIREDATE,
MONTHS_BETWEEN(SYSDATE,HIREDATE),
MONTHS_BETWEEN(SYSDATE,HIREDATE)/12,
round(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),
CEIL(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) CEIL,
FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) FLOOR
MONTHS_BETWEEN(HIREDATE,SYSDATE),
MONTHS_BETWEEN(HIREDATE,SYSDATE)/12,
round(MONTHS_BETWEEN(HIREDATE,SYSDATE)/12)
FROM EMP;
NOTE: DATE1 IS ALWAYS GREATER THAN DATE2 OTHERWISE ORACLE RETURNS NAGATIVE VALUE.
NEXT_DAY():
**********
-->It is used to display the next day date based on the format.
SYNTAX:
*******
NEXT_DAY(DATE,'<DAY NAME>')
EX:
***
SELECT NEXT_DAY(SYSDATE,'SUN') FROM DUAL;
LAST_DAY():
***********
-->it is used to display the last day of the month.
SYNTAX:
*******
LAST_DAY(DATE)
EX:
***
SELECT LAST_DAY(SYSDATE) FROM DUAL;
SELECT LAST_DAY(HIREDATE) FROM EMP;
TRUNC:
******
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'YEAR'),'DD-MON-YYYY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'YYYY'),'DD-MON-YYYY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'YYYY'),'DD-MON-YY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'MON'),'DD-MON-YY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'MM'),'DD-MON-YY HH:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YY HH:MI:SS'),TO_CHAR(TRUNC(SYSDATE,'MONTH'),'DD-MON-YY HH:MI:SS') FROM DUAL;
EXTRACT:
********
-->It is used to EXTRACT a portion of a date value.
SYNTAX:
*******
EXTRACT ((YEAR |MONTH |DAY |HOUR |MINUTE|SECOND | TIMEZONE_HOUR | TIMEZONE_MNUTE | TIMEZONE_REGION | TIMEZONE_ABBREVATION) FROM DATE)
SELECT SYSDATE,EXTRACT(DAY FROM SYSDATE) FROM DUAL
SELECT SYSDATE,EXTRACT(MONTH FROM SYSDATE) FROM DUAL
SELECT SYSDATE,EXTRACT(YEAR FROM SYSDATE) FROM DUAL
SELECT EXTRACT(HOUR FROM TIMESTAMP '2021-07-20 17:48:20') EXTRACT_VALUE FROM DUAL;
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2021-07-20 17:48:20') EXTRACT_VALUE FROM DUAL;
SELECT EXTRACT(SECOND FROM TIMESTAMP '2021-07-20 17:48:20') EXTRACT_VALUE FROM DUAL;
DATE FORMATS:
*************
D--Name of day in a week
DD --Name of day in a month
DDD--Name of day in a year
DY--First 3 characters of the day.
dy--First 3 characters of the day.
DAY--Complete characters of the day.
Day--Complete characters of the day.
day--Complete characters of the day.
MM--Number of the months in the year
MON--First three characters of the month.
mon--First three characters of the month.
MONTH--Complete characters of the month.
Month--Complete characters of the month.
month--Complete characters of the month.
Y--Last digit of the year
YY--Last two digits of the year.
YYY--Last three digits of the year.
YYYY--Four digits of the year.
HH--An hour of the day.
HH24--24 hours format.
Mi--Minutes of the year
SS--Seconds of the year
FS--Fraction of seconds
W--Week of the month
WW--week of the year
Q--Quarter of the year
YEAR FORMATS:
---------------------------
YYYY - 2022
YY - 22
YEAR - TWENTY TWENTY TWO
CC - CENTUARY 22
AD / BC - AD YAER / BC YEAR
MONTH FORMAT:
----------------------------
MM - MONTH NUMBER
MON - FIRST THREE CHAR FROM MONTH SPELLING
MONTH - FULL NAME OF MONTH
DAY FORMATS:
-------------------------
DDD - DAY OF THE YEAR.
DD - DAY OF THE MONTH.
D - DAY OF THE WEEK
SUN - 1
MON - 2
TUE - 3
WEN - 4
THU - 5
FRI - 6
SAT - 7
DAY - FULL NAME OF THE DAY
DY - FIRST THREE CHAR's OF DAY SPELLING
QUATER FORMAT:
----------------------------
Q - ONE DIGIT QUATER OF THE YEAR
1 - JAN - MAR
2 - APR - JUN
3 - JUL - SEP
4 - OCT - DEC
WEEK FORMAT:
--------------------------
WW - WEEK OF THE YEAR
W - WEEK OF MONTH
TIME FORMAT:
-------------------------
HH - HOUR PART
HH24 - 24 hrs FROMAT
MI - MINUTE PART
SS - SECONDS PART
AM / PM - AM TME (OR) PM TIME
Conversion Functions:
*********************
TO_CHAR():
**********
-->It is used to convert system format into user format.
-->DATE TYPE TO CHAR TYPE TO DISPLAY DATE IN DIFFERENT FROMAT.
-->It is used to convert the date value into the varchar2 data type.
-->It is used to convert the number into character and also it converts the date into character.
SYNTAX:
********
TO_CHAR(DATE,[<FORMAT>])
EX:
***
SELECT SYSDATE FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'Day') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYYY YY YEAR CC AD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'MM MON MONTH') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'mm mon month') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DDD DD D DAY DY') FROM DUAL;
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'FMDAY')='FRIDAY';
SELECT TO_CHAR(SYSDATE,'Q') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'WW W') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'HH:MI:SS AM') FROM DUAL;
SELECT TO_CHAR(12346,'99,99,999.99')FROM DUAL;
SELECT 1234,TO_CHAR(1234,'9999D99')FROM DUAL; --decimal indicator(It return specified position of the decimal character)
SELECT SAL,TO_CHAR(SAL,'9999D99') FROM EMP;
SELECT TO_CHAR(5634,'9.9EEEE') FROM DUAL; --(It returns a numeric value using scientific notation)
SELECT TO_CHAR(1234567,'99G99G9999') FROM DUAL; --(It returns the specified of the group seperator)
SELECT TO_CHAR(SAL,'9G999') FROM EMP;
SELECT TO_CHAR(1234,'L9999') FROM DUAL; --It returns the specified position of the local currency symbol
SELECT SAL,TO_CHAR(SAL,'L99999') FROM EMP;
SELECT SAL,TO_CHAR(SAL,'L99G999D99','NLS_CURRENCY=RS') FROM EMP;
SELECT -20000,TO_CHAR(-20000,'L99G999D99PR')FROM DUAL;
SELECT SAL,COMM,COMM-SAL,TO_CHAR(COMM-SAL,'L9999PR') FROM EMP;
SELECT TO_CHAR(2000,'9999S') FROM DUAL;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DD MON YYYY') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DD MON YEAR') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DD MONTH YEAR') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DDTH MON YEAR') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'DDSPTH MONTH YEAR') FROM EMP;
/
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'FMDDSPTH MON YEAR') FROM EMP;
SELECT TO_CHAR(COMM-SAL,'S99999') FROM EMP;
SELECT TO_CHAR(COMM-SAL,'99999S') FROM EMP;
--TO DISPLAY EMPLOYEE WHO ARE JOINED IN YEAR 1982 BY USING TO_CHAR() FUNCTION ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')=1982;
--TO DISPLAY EMPLOYEE WHO ARE JOINED IN YEAR 1980,1982,1987 BY USING TO_CHAR() FUNCTION ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY') IN(1980,1982,1987);
--TO DISPLAY EMPLOYEE WHO ARE JOINED IN FEB,MAY,DEC MONTHS BY USING TO_CHAR() ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MON') IN('FEB','MAY','DEC');
--TO DISPLAY EMPLOYEE WHO ARE JOINED IN FEB 1981 BY USING TO_CHAR() ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MMYYYY')='021981';
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MONYYYY')='FEB1981';
--TO DISPLAY EMPLOYEE WHO ARE JOINED ON "FRIDAY" BY USING TO_CHAR() ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'FMDAY')='FRIDAY';
--TO DISPLAY EMPLOYEE ON WHICH DAY EMPLOYEES ARE JOINED ?
SELECT ENAME||' '||'JOINED ON'||' '||TO_CHAR(HIREDATE,'DAY') FROM EMP;
--WHO ARE JOINED IN 2nd QUATER OF 1981 ?
SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')='1981' AND TO_CHAR(HIREDATE,'Q')=2;
TO_DATE():
**********
-->It is used to convert user format into system format.
-->It is used to convert the string into date format.
SYNTAX:
********
TO_DATE(STRING[,FROMAT])
EX:
***
SELECT TO_DATE('08/MAY/2021') FROM DUAL;
SELECT TO_DATE('08-MAY-2021')+10 FROM DUAL;
SELECT TO_DATE(25,'DD') FROM DUAL;
SELECT TO_DATE('JANUARY 22,2021','MONTH DD,YYYY')"TO_DATE" FROM DUAL;
SELECT TO_DATE('FEB 22 2021','MON DD YYYY')"TO_DATE" FROM DUAL;
SELECT TO_DATE('16 05 2021','DD MM YYYY')"TO_DATE" FROM DUAL;
SELECT TO_CHAR(TO_DATE('16 05 2021','DD MM YYYY'),'DD-MON-YYYY')"TO_DATE" FROM DUAL;
CREATE TABLE DATE_TEST
(
A NUMBER,
B VARCHAR2(20),
C DATE
);
SELECT * FROM DATE_TEST;
/
INSERT INTO DATE_TEST VALUES(1,'A',SYSDATE);
/
INSERT INTO DATE_TEST VALUES(2,'B','20-OCT-22');
/
INSERT INTO DATE_TEST VALUES(3,'C','20/10/22'); --IT WILL THROW THE ERROR -- U CAN APPLY THE TO_DATE FUNCTION
/
INSERT INTO DATE_TEST VALUES(3,'C',TO_DATE('20/10/22','DD/MM/YY')); --SUCCESSFULLY INSERTED
/
TO_NUMBER:
**********
-->It is used to translate a value of char or varchar datatype to number format.
EX:
***
SELECT TO_NUMBER('20') FROM DUAL;
SELECT TO_NUMBER('200') + TO_NUMBER('700') FROM DUAL;
SELECT TO_NUMBER('4328','9999') FROM DUAL;
SELECT TO_NUMBER('$4328','$9999') FROM DUAL
SELECT TO_NUMBER('4328.60','9999.99') FROM DUAL;
SELECT TO_NUMBER('$65.619','L99.999') FROM DUAL;
SELECT TO_NUMBER('123,456,789','999,999,999') FROM DUAL;
MULTIPLE ROW FUNCTIONS OR AGGRAGATE FUNCTIONS:
*************************************************
THESE FUNCTIONS ARE RETURNS EITHER GROUP OF VALUES
(OR) A SINGLE VALUE.
SUM:
*******
--> It returns the sum value of column.
-->It is an aggregate function
-->It ignore null values.
-->it will gives the sum of the values to the specified function.
SYNTAX:
********
SUM(DISTINCT /ALL COLUMNS)
EX:
***
SELECT SUM(SAL) FROM EMP;
SELECT SUM(DISTINCT SAL) FROM EMP;
SELECT SUM(SAL) FROM EMP WHERE JOB='CLERK';
SELECT SUM(COMM),SUM(DISTINCT COMM) FROM EMP;
AVG:
******
-->It will give the average value.
-->It returns the average value of column.
-->It ignore null values.
SYNTAX:
*******
AVG(DISTINCT /ALL COLUMNS)
EX:
****
SELECT AVG(SAL) FROM EMP;
SELECT AVG(DISTINCT SAL) FROM EMP;
SELECT AVG(SAL) FROM EMP WHERE DEPTNO=10;
SELECT AVG(COMM),AVG(DISTINCT COMM) FROM EMP;
MIN():
******
-->It will give the minimum of the values of the specified column.
-->It ignores null values.
SYNTAX:
*******
MIN(DISTINCT /ALL COLUMNS)
EX:
****
SELECT MIN(HIREDATE) FROM EMP;
SELECT MIN(SAL),MIN(DISTINCT SAL) FROM EMP;
SELECT MIN(HIREDATE) FROM EMP WHERE JOB='MANAGER';
SELECT MIN(COMM) FROM EMP;
MAX:
*****
-->It will give the maximum of the values of the specified column.
-->It ignores null values.
SYNTAX:
*******
MAX(DISTINCT /ALL COLUMNS)
EX:
****
SELECT MAX(SAL),MAX(DISTINCT SAL) FROM EMP;
SELECT MAX(COMM),MAX(DISTINCT COMM) FROM EMP;
COUNT():
----------------
-->It will gives the number of rows in the specified column.
-->If '*' is used to return all rows,including duplicates and nulls.
--> THREE TYPES,
i) COUNT(*)
ii) COUNT(<COLUMN NAME>)
iii) COUNT(DISTINCT <COLUMN NAME>)
COUNT(*):
----------------
--> COUNTING ALL ROWS (DUPLICATES & NULLS) IN A TABLE.
EX:
***
SELECT COUNT(*) FROM EMP;
COUNT(<COLUMN NAME>):
*********************
--> COUNTING ALL VALUES INCLUDING DUPLICATE VALUES BUT NOT NULL VALUES FROM A COLUMN.
EX:
***
SELECT COUNT(COMM) FROM EMP;
COUNT(DISTINCT <COLUMN NAME>):
******************************
--> COUNTING UNIQUE VALUES FROM A COLUMN.HERE "DISTINCT" KEYWORD IS ELIMINATING DUPLICATE VALUES.
EX:
****
SELECT COUNT(DISTINCT MGR) FROM EMP;
SELECT COUNT(DISTINCT COMM) FROM EMP;
GENERAL FUNCTIONS:
******************
USER:
*****
-->The purpose of USER function is this will return the name of the present session user(schema).
-->it returns current user name.
SYNTAX:
*******
USER
EX:
***
SELECT USER FROM DUAL;
UID:
****
-->The purpose of UID function is used to find the user id value for the current session.
SYNTAX:
*******
UID
EX:
***
SELECT UID FROM DUAL;
SELECT USER,UID FROM DUAL;
USERENV('parameters'):
**********************
The parameter list of USERENV is shown in the below table.
Parameter: use of parameter value
*********** ******************************************
LANG Returns ISO abbrevation language name.
LANGUAGE Returns the language and territory of the current session.
SESSIONID Returns the auditing sesiion number.
TERMINAL Returns the operating system identifier of the current session
EX:
***
SELECT USERENV('LANG') FROM DUAL;
SELECT USERENV('LANGUAGE') FROM DUAL;
SELECT USERENV('SESSIONID') FROM DUAL;
SELECT USERENV('TERMINAL') FROM DUAL;
GREATEST:
**********
-->It is used to find the greatest value in the available or provided expression values.
SYNTAX:
*******
GREATEST (expression_list_seperated_comma)
EX:
***
SELECT GREATEST(10,4,9,20) FROM DUAL;
SELECT GREATEST('A','E','I','O','U') FROM DUAL;
SELECT GREATEST(TO_DATE('11-JAN-1981','DD-MON-YYYY'),TO_DATE('16-DEC-1982','DD-MON-YYYY'),TO_DATE('12-MAR-1980','DD-MON-YYYY')) "GREATEST" FROM DUAL;
LEAST:
*****
-->It is used to find the least value in the available or provided expression values.
SYNTAX:
*******
LEAST(expression_list_seperated_comma)
EX:
***
SELECT LEAST(12,34,77,8,66) "LEAST" FROM DUAL;
SELECT LEAST(TO_DATE('11-JAN-1981','DD-MON-YYYY'),TO_DATE('16-DEC-1982','DD-MON-YYYY'),TO_DATE('12-MAR-1980','DD-MON-YYYY')) "LEAST" FROM DUAL;
NVL:
****
-->It is used to handle the null values
-->if exp1 is null return exp2 else exp1
SYNTAX:
********
NVL(exp1,expr2)
EX:
****
SELECT NVL('A','B') FROM DUAL;
SELECT NVL(NULL,'B') FROM DUAL;
SELECT EMPNO,ENAME,JOB,SAL,COMM,NVL(SAL,0),NVL(COMM,0) FROM EMP;
SELECT EMPNO.ENAME,JOB,SAL,COMM,NVL(SAL,0),NVL(COMM,0),SAL+COMM,SAL+NVL(COMM,0) FROM EMP;
--How to check the total table size?
SELECT SUM(BYTES) / 1024 FROM DBA_SEGMENTS WHERE SEGMENT_NAME='EMP'
NVL2:
*****
-->If exp1 is null it returns exp3,if exp1 is not null it returns exp2
SYNTAX:
*******
NVL2(EXP1,EXP2,EXP3)
EX:
***
SELECT NVL2('A','B','C') FROM DUAL;
SELECT NVL2(NULL,'B','C') FROM DUAL;
SELECT NVL2('A',NULL,'C') FROM DUAL;
SELECT ENAME,JOB,NVL2(COMM,SAL+COMM,SAL) NET FROM EMP;
SELECT ENAME,JOB,COMM,SAL+COMM,SAL,
NVL2(COMM,SAL+COMM,SAL)
FROM EMP;
NULLIF:
*******
-->If exp1 and exp2 results are same it returns null value otherwise it returns exp1 result.
SYNTAX:
******
NULLIF(EXPR1,EXPR2)
EX:
***
SELECT NULLIF('A','A') FROM DUAL;
SELECT NULLIF('A','B') FROM DUAL;
SELECT NULLIF('','B') FROM DUAL;
SELECT NULLIF('A',NULL) FROM DUAL;
SELECT NULLIF(100,50*2),NULLIF(200,15*9),NULLIF(600,300+300) FROM DUAL;
SELECT ENAME,LENGTH(ENAME) EXPR1,JOB,LENGTH(JOB)EXPR2,
NULLIF(LENGTH(ENAME),LENGTH(JOB))NULLIF
FROM EMP
COALESCE:
**********
-->It picks the first not null values.
SYNTAX:
*******
COALESCE(EXPR1,EXPR2,EPR3,...,EXPRN);
EX:
***
SELECT COALESCE('A','B','C','D','E') FROM DUAL;
SELECT COALESCE('B','C','D','E') FROM DUAL;
SELECT COALESCE('C','D','E') FROM DUAL;
SELECT COALESCE(NULL,NULL,NULL,'D','E') FROM DUAL;
SELECT COALESCE(100+NULL,128-NULL+1000,12*NULL,268,2120,3281) FROM DUAL;
SELECT ENAME,JOB,COMM*2,SAL*1.5,
COALESCE(COMM*2,SAL*1.5) BONUS FROM EMP;
No comments:
Post a Comment