Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
41 views

Functions: Document Prepared by

This document discusses various SQL functions in Oracle. It covers single-row functions that perform actions on individual rows like character, number, date, and conversion functions. It also covers multiple-row functions called group functions that aggregate data across rows, like MIN(), MAX(), SUM(), COUNT(), and AVG(). Control statements like DECODE and CASE are also summarized. Lastly, it provides examples of how to use many of these functions to manipulate and analyze data in Oracle.

Uploaded by

Senthil Raj
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views

Functions: Document Prepared by

This document discusses various SQL functions in Oracle. It covers single-row functions that perform actions on individual rows like character, number, date, and conversion functions. It also covers multiple-row functions called group functions that aggregate data across rows, like MIN(), MAX(), SUM(), COUNT(), and AVG(). Control statements like DECODE and CASE are also summarized. Lastly, it provides examples of how to use many of these functions to manipulate and analyze data in Oracle.

Uploaded by

Senthil Raj
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

FUNCTIONS

Document prepared by: AN.Murugappan

1 .SINGLE ROW FUNCTION - THIS FUNCTION PERFORM ACTION ON SINGLE ROW (INPUT VALUES 1) 2. MULTPLE ROW FUNCTION THIS FUNCTION PERFORM ACTION ON SOME SET OF ROWS (INPUT VALUES > 1) SINGLE ROW FUNCTIONS

1.CHARACTER FUNCTION

CASE FUNCTION

UPPER( ) LOWER( ) INITCAP( ) CONCAT( ) SUBSTR( ) INSTR( ) LENGTH( ) LPAD | RPAD ( ) REPLACE( ) TRANSLATE( ) TRIM( )

CHARACTER FUNCTION

2.NUMBER FUNCTION`

ROUND( ) TRUNC( ) MOD( ) POWER( )

3.DATE FUNCTION

SYSDATE MONTHS_BETWEEN( ) ADD_MONTHS( ) NEXT_DAY( ) LAST_DAY( )

4.CONVERSION

TO_NUMBER( ) TO_DATE( ) TO_CHAR( )

5.GENERAL FUNCTION

NVL( ) NVL2( ) NULIF( ) COALSCE( )

CONTROL STATEMENTS

DECODE CASE

MULIPLE ROW FUNCTIONS GROUP FUNCTION AGGRECATING FUNCTION MIN( ) MAX( ) SUM( ) AVG( ) COUNT( )

GROUP BY HAVING

1. CHARACTER FUNCTION

- CASE MANUPLICATION - CHARACTER MANUPLICATION

CASE MANUPLICATION CASE FUNCTIONS UPPER(MY DOCUMENT) LOWER(MY DOCUMENT) INITCAP(MY DOCUMENT) RESULT MY DOCUMENT my document My Document

SELECT UPPER('my first query'),LOWER('my first query'),INITCAP('my first query') from dual;

CHARACTER MANUPLICATION CONCAT ( ) SUBSTR ( ) INSTR ( ) LPAD | RPAD ( ) REPLACE ( ) TRANSLATE ( ) LTRIM | RTEIM ( )

SELECT CONCAT ('Muthu','Karthi') FROM DUAL;

SELECT SUBSTR ('MURUGAPPAN', 1, 5) FROM DUAL;

SELECT SUBSTR ('MURUGAPPAN',-3, 3) FROM DUAL;

SELECT INSTR ('MURUGAPPAN','A') FROM DUAL;

SELECT INSTR ('MURUGAPPAN','A', 1, 2) FROM DUAL;

SELECT LPAD ('2500', 10,'*') FROM DUAL;

SELECT RPAD ('2500', 10,'*') FROM DUAL;

SELECT REPLACE ('MURUGAPPAN','AN','BC') FROM DUAL; - STRING BASED

SELECT TRANSLATE ('MURUGAPPAN CSE-A','UA','AB') FROM DUAL; CHARACTER BASED

SELECT TRIM ('M' FROM 'MAN') FROM DUAL;

SELECT LTRIM ('000000011230000', 0) FROM DUAL;

SELECT RTRIM ('000000011230000', 0) FROM DUAL;

SELECT LTRIM (RTRIM ('000000011230000', 0), 0) FROM DUAL;

2. NUMBER FUNCTIONS ROUND ( ) TRUNC ( ) MOD ( ) POWER ( ) ROUND ( ) SELECT ROUND (23.446, 2), ROUND (23.444, 2) FROM DUAL;

SELECT ROUND (23.744, 0), ROUND (23.244, 0) FROM DUAL;

SELECT ROUND (23.444,-1), ROUND (23.644,-1) FROM DUAL;

SELECT ROUND (27.644,-1), ROUND (27.644,-2), ROUND (567.644,-2) FROM DUAL;

TRUNC ( ) SELECT TRUNC (234.5678, 2) FROM DUAL; SELECT TRUNC (234.5678, 3) FROM DUAL; SELECT TRUNC (234.5678, 0) FROM DUAL;

SELECT TRUNC (234.5678,-1) FROM DUAL;

MOD ( ) SELECT MOD (12, 5) FROM DUAL; SELECT MOD (12, 2) FROM DUAL; SELECT MOD (12,-5) FROM DUAL; SELECT MOD (-12, 5) FROM DUAL; POWER ( ) SELECT POWER (2, 2) FROM DUAL; SELECT POWER (5, 2) FROM DUAL; RESULT: 4 RESULT: 25 RESULT: 2 RESULT: 0 RESULT: 2 RESULT: -2

3. DATE FUNCTIONS SYSDATE + MONTHS_BETWEEN ( ) ADD_MONTHS ( ) NEXT_DAY ( ) LAST_DAY ( )

ORACLE DATE FORMAT: DD-MM-YY

SYSDATE + -

SELECT SYSDATE FROM DUAL; SELECT SYSDATE+1 FROM DUAL; SELECT SYSDATE-1 FROM DUAL;

MONTHS_BETWEEN

SELECT MONTHS_BETWEEN (SYSDATE,'21-JAN-89') FROM DUAL;

SELECT ROUND (MONTHS_BETWEEN (SYSDATE,'21-JAN-89'), 0) AS MONTHS FROM DUAL;

THERE IS NO OTHER FUNCTION TO FIN DOUT THE YEAS BETWEEN SO WE USE MONTHS_BETWEEN/12

SELECT ROUND (MONTHS_BETWEEN (SYSDATE,'21-JAN-89')/12, 0) || YEARS FROM DUAL;

ADD_MONTHS

SELECT ADD_MONTHS ('12-FEB-11', 1) FROM DUAL; SELECT ADD_MONTHS ('12-FEB-11', 2) FROM DUAL;

SELECT ADD_MONTHS ('12-FEB-11',-1) FROM DUAL; SELECT ADD_MONTHS ('12-FEB-11',-2) FROM DUAL;

NEXT_DAY

SELECT NEXT_DAY ('31-JUL-11','WEDNESDAY') FROM DUAL; SELECT NEXT_DAY ('31-JUL-11','FRIDAY') FROM DUAL;

LAST_DAY SELECT LAST_DAY (SYSDATE) FROM DUAL; SELECT LAST_DAY ('21-FEB-11') FROM DUAL; SELECT LAST_DAY ('21-FEB-00') FROM DUAL; SELECT LAST_DAY ('21-JAN-11') FROM DUAL;

4. TYPE CONVERSIONS

TO_NUMBER ( ) TO_DATE ( ) TO_CHAR ( )

SELECT 5+5 FROM DUAL;

TO_NUMBER

CONVERSION -IMPLICIT CONVERSION -EXPLICIT CONVERSION

TO_NUMBER ( ) IMPLICIT CONVERSION

SELECT 5 + '15' FROM DUAL;

TO_NUMBER ( ) EXPLICIT CONVERSION

SELECT 5+TO_NUMBER ('15') FROM DUAL;

TO_CHAR ( ) IMPLICIT CONVERSION

SELECT 5 || 'B5' FROM DUAL;

TO_CHAR ( ) EXPLICIT CONVERSION

SELECT TO_CHAR (5) || 'B5' FROM DUAL

TO_DATE ( )

SELECT * FROM EMPLOYEES;

SELECT FIRST_NAME, LAST_NAME, SALARY, HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE='21-SEP-89';

IF I WRITE THE ABOVE QUERY BY USING THE DATE IN THIS FORMAT '21-SEP1988'

TO_DATE IMPLICIT CONVERSION

SELECT FIRST_NAME, LAST_NAME, SALARY, HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE='21-SEP-1989';

TO_DATE EXPLICIT CONVERSION

SELECT FIRST_NAME, LAST_NAME, SALARY, HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE = TO_DATE ('21-SEP-1989','DD-MM-YYYY');

SELECT FIRST_NAME, LAST_NAME, SALARY, HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE=TO_DATE ('SEP-21-1989','MM-DD-YYYY');

TO_CHAR

SELECT SYSDATE FROM DUAL;

SELECT TO_CHAR (SYSDATE,'DD-MM-YYYY') FROM DUAL;

DD MM MON

- DATE - TO SHOW THE MONTH LIKE THIS (07) - TO SHOW THE MONTH LIKE THIS (JUL)

MONTH - TO SHOW THE MONTH LIKE THIS (JULY) YY - TO SHOW THE YEAR LIKE THIS (11)

YYYY - TO SHOW THE YEAR LIKE THIS (2011) YEAR - TO SHOW THE YEAR LIKE THIS ()

SELECT TO_CHAR (SYSDATE,'DD') FROM DUAL; SELECT TO_CHAR (SYSDATE,'MM') FROM DUAL; SELECT TO_CHAR (SYSDATE,'MONTH') FROM DUAL; SELECT TO_CHAR (SYSDATE,'YY') FROM DUAL; SELECT TO_CHAR (SYSDATE,'YYYY') FROM DUAL; SELECT TO_CHAR (SYSDATE,'YEAR') FROM DUAL;

HH:MM:SS - 12 HOURS CLOCH

SELECT TO_CHAR (SYSDATE,'HH:MM:SS') FROM DUAL;

HH24: MM:SS - 24 HOURS CLOCH

SELECT TO_CHAR (SYSDATE,'HH24: MM:SS) FROM DUAL;

D (1-SUNDAY 2-MONDAY 3-TUESDAY 4-WEDNESDAY 5-THURSDAY 6-FRIDAY 7-SATURDAY)

SELECT TO_CHAR (SYSDATE,'D') FROM DUAL;

DDSPTH SELECT TO_CHAR (SYSDATE,'DDSPTH') FROM DUAL;

DDTH SELECT TO_CHAR (SYSDATE,'DDTH') FROM DUAL; 5. GENERAL FUNCTIONS NVL ( ) NVL2 ( ) NULIF ( ) COALSCE ( )

NVL - NVL ACCEPT TWO ARGUMENTS IF THE VALUE OF FIRST ARGUMENT IS NULL MEANS IT CAN BE REPLACE BY THE SECOND VALUE ELSE IT DISPLAY THE FIRST ARGUMENTS

SELECT COMMISSION_PCT, NVL (COMMISSION_PCT, 0) FROM EMPLOYEES;

* IN NVL BOTH ARGUMENTS SHOULD BE IN SAME FORMAT

SELECT NVL (TO_CHAR (COMMISSION_PCT),'NO') FROM EMPLOYEES;

NVL2 - IT CONTAIN 3 ARGUMENT IF THE VALUE OF THE FIRST ARGUMENT IS NULL MEANS IT DISPLAY THE THIRD ARGUMENT ELSE IT DISPLAY THE SECOND ARGUMENT

SELECT COMMISSION_PCT, NVL2 (COMMISSION_PCT, 1, 0) FROM EMPLOYEES;

NULLIF ACCEPT TWO ARGUMENTS IF BOTH THE VALUES ARE SAME MEANS IT RETURN NULL VALUE ELSE RETURN THE VALUE OF THE FIRST ARGUMENT

SELECT NULLIF (1, 1) FROM DUAL; SELECT NULLIF (2, 1) FROM DUAL; SELECT NULLIF (1, 2) FROM DUAL;

2 1

COALESEC

SELECT COALESCE (NULL, NULL, NULL, 45, NULL, NULL) FROM DUAL; CONTROL STATEMENTS DECODE CASE DECODE IT IS A FUNCTION OPERATOR ARE NOT ALLOWED TO USED INSIDE THE DECODE STATEMENT IF THE VALUE IS EXACTLY MATCHED THEN ONLY IT RETURN THE VALUE SELECT DISTINCT (DEPARTMENT_ID), DECODE (DEPARTMENT_ID, 10,'IT', 20,'BPO', 30,'KPO', 40,'ADMIN', 50,'HR','NILL') FROM EMPLOYEES

CASE

SELECT DISTINCT (DEPARTMENT_ID), CASE WHEN DEPARTMENT_ID = 10 THEN 'IT' WHEN DEPARTMENT_ID IN (20, 30) THEN 'BPO' WHEN DEPARTMENT_ID BETWEEN 40 AND 70 THEN 'KPO' ELSE 'XXX' END AS "DEPARTMENT_NAME" FROM EMPLOYEES ORDER BY 1;

ADVANTAGE OF USING CASE WE USE ALL OPERATORS WRITTEN IN MULTIPLE LINE FAST EXECUTION COMPARE TO DECODE

GROUP FUNCTIONS
MIN ( ) MAX ( ) SUM ( ) COUNT ( ) AVG ( )

MAX ( ) SELECT MAX (SALARY) FROM EMPLOYEES;

MIN ( ) SELECT MIN (SALARY) FROM EMPLOYEES;

SUM ( ) SELECT SUM (SALARY) FROM EMPLOYEES;

COUNT ( ) SELECT COUNT (SALARY) FROM EMPLOYEES;

SELECT COUNT (*) FROM EMPLOYEES;

* IS ONLY APPLICABLE FOR COUNT NOT FOR OTHER FUNCTIONS

SELECT COUNT (1) FROM EMPLOYEES;

AVG ( ) CREATE TABLE AVG (VALUE1 NUMBER (3));

INSERT INTO AVG VALUES (25); INSERT INTO AVG VALUES (25); INSERT INTO AVG VALUES (25); INSERT INTO AVG VALUES (25);

INSERT INTO AVG VALUES ('');

SELECT * FROM AVG;

THIS TABLE CONTAINS 5 VALUES

SELECT AVG (VALUE1) FROM AVG

100/5 = 20 BUT IT SHOWS 25 SO AVG () NOT CONSIDER NULL VALUES. INORDER TO AVOID IT WE USE NVL FUNCTION

SELECT AVG (NVL (VALUE1, 0)) FROM AVG

GROUP BY: IF YOU WANT TO SELECT ANY COLUMN WITH THE GROUP FUNCTION YOU HAVE TO GROUP THE COLUMN BY USING THE CLAUSE GROUP BY HAVING IS A CLAUSE USED BY GROUP FUNCTIONS WHILE IMPLEMENTING THE CONDITION SELECT DEPARTMENT_ID, MAX (SALARY) FROM EMPLOYEES

GROUP BY DEPARTMENT_ID HAVING MAX (SALARY) > 10000;

SELECT DEPARTMENT_ID, COUNT (DEPARTMENT_ID) A, CASE WHEN COUNT (DEPARTMENT_ID) = 45 THEN 'FIRST_RANK' WHEN COUNT (DEPARTMENT_ID) = 34 THEN 'SECOND_RANK' END FROM EMPLOYEES GROUP BY DEPARTMENT_ID HAVING COUNT (DEPARTMENT_ID) > 30;

ORDER OF CLAUSEES SELECT DEPARTMENT_ID, COUNT (EMPLOYEE_ID) FROM EMPLOYEES WHERE SALARY > 2000 GROUP BY DEPARTMENT_ID HAVING

COUNT (EMPLOYEE_ID) > 2 ORDER BY 2 DESC;

---------------------------------------------------------------------------------------------------------------------

You might also like