Using Single-Row Functions to
Customize Output
Lesson Agenda
• Single-row SQL functions
• Character functions
• Number functions
• Working with dates
• Date functions
3-2
SQL Functions
Input Output
Function
arg 1 Function performs
action
arg 2
Result
value
arg n
3-3
Two Types of SQL Functions
Functions
Single-row Multiple-row
functions
functions
Return one result Return one result
per row per set of rows
3-4
Single-Row Functions
Single-row functions:
• Manipulate data items
• Accept arguments and return one value
• Act on each row that is returned
• Return one result per row
• May modify the data type
• Can be nested
• Accept arguments that can be a column or an expression
function_name [(arg1, arg2,...)]
3-5
Single-Row Functions
Single-row
Character Number
functions
Date
3-6
Lesson Agenda
• Single-row SQL functions
• Character functions
• Number functions
• Working with dates
• Date functions
3-7 Copyright © 2009, Oracle. All rights reserved.
Character Functions
Character
functions
Case-conversion Character-manipulation
functions functions
LOWER CONCAT
UPPER
INITCAP SUBSTR
LENGTH
INSTR
LPAD | RPAD
TRIM
3-8 REPLACE
Case-Conversion Functions
These functions convert the case for character strings:
Function Result
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL Course') Sql Course
3 - 11
Using Case-Conversion Functions
Display the employee number, name, and department number
for employee Higgins:
SELECT employee_id, last_name, department_id
FROM employees
WHERE last_name = 'higgins';
SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'higgins';
3 - 12
Character-Manipulation Functions
These functions manipulate character strings:
Function Result
CONCAT('Hello', 'World') HelloWorld
SUBSTR('HelloWorld',1,5) Hello
LENGTH('HelloWorld') 10
INSTR('HelloWorld', 'W') 6
LPAD(salary,10,'*') *****24000
RPAD(salary, 10, '*') 24000*****
REPLACE BLACK and BLUE
('JACK and JUE','J','BL')
TRIM('H' FROM 'HelloWorld') elloWorld
3 - 13
Using the Character-Manipulation Functions
1
SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH (last_name), 2
INSTR(last_name, 'a') "Contains 'a'?"
FROM employees 3
WHERE SUBSTR(job_id, 4) = 'REP';
1 2 3
3 - 14
Lesson Agenda
• Single-row SQL functions
• Character functions
• Number functions
• Working with dates
• Date Functions
3 - 15
Number Functions
• ROUND: Rounds value to a specified decimal
• TRUNC: Truncates value to a specified decimal
• MOD: Returns remainder of division
Function Result
ROUND(45.926, 2) 45.93
TRUNC(45.926, 2) 45.92
MOD(1600, 300) 100
3 - 16
Using the ROUND
Function
1 2
SELECT ROUND(45.923,2), ROUND(45.923,0),
ROUND(45.923,-1) 3
FROM DUAL;
1 2 3
DUAL is a dummy table that you can use to view
results from functions and calculations.
3 - 17
Using the TRUNC
Function
1 2
SELECT TRUNC(45.923,2), TRUNC(45.923),
TRUNC(45.923,-1) 3
FROM DUAL;
1 2 3
3 - 18
Using the MOD
Function
For all employees with the job title of Sales Representative,
calculate the remainder of the salary after it is divided by 5,000.
SELECT last_name, salary, MOD(salary, 5000)
FROM employees
WHERE job_id = 'SA_REP';
3 - 19
Lesson Agenda
• Single-row SQL functions
• Character functions
• Number functions
• Working with dates
• Date functions
3 - 20
Working with Dates
• The Oracle database stores dates in an internal numeric
format: century, year, month, day, hours, minutes, and
seconds.
• The date display format is DD-MON-RR.
– Enables you to store 21st-century dates in the 20th century
by specifying only the last two digits of the year
– Enables you to store 20th-century dates in the
21st century in the same way
SELECT last_name, hire_date
FROM employees
WHERE hire_date < '01-
FEB-88';
3 - 21
RR Date
Format
Current
Current Year
Year Specified Date RR Format YY Format
1995 27-OCT-95 1995 1995
1995 27-OCT-17 2017 1917
2001 27-OCT-17 2017 2017
2001 27-OCT-95 1995 2095
If the specified two-digit year is:
0–49 50–99
If two digits The return date is in The return date is in
of the 0–49 the current century the century before
current the current one
year are: The return date is in The return date is in
50–99 the century after the current century
the current one
3 - 22
Using the SYSDATE
Function
SYSDATE is a function that
returns:
• Date
SELECT sysdate
FROM dual;
3 - 24
Arithmetic with Dates
• Add or subtract a number to or from a date for a resultant
date value.
• Subtract two dates to find the number of days between
those dates.
3 - 25
Using Arithmetic Operators
with Dates
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE
department_id =
90;
3 - 26
Lesson Agenda
• Single-row SQL functions
• Character functions
• Number functions
• Working with dates
• Date functions
3 - 27
Date-Manipulation Functions
Function Result
MONTHS_BETWEEN Number of months between two dates
ADD_MONTHS Add calendar months to date
NEXT_DAY Next day of the date specified
LAST_DAY Last day of the month
ROUND Round date
TRUNC Truncate date
3 - 28
Using Date Functions
Function Result
MONTHS_BETWEEN 19.6774194
('01-SEP-95','11-JAN-94')
ADD_MONTHS (‘31-JAN-96',1) ‘29-FEB-96'
NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95'
LAST_DAY ('01-FEB-95') '28-FEB-95'
3 - 29
Using ROUND and TRUNC Functions with
Dates
Assume SYSDATE = '25-JUL-
03':
Function Result
ROUND(SYSDATE,'MONTH') 01-AUG-03
ROUND(SYSDATE ,'YEAR') 01-JAN-04
TRUNC(SYSDATE ,'MONTH') 01-JUL-03
TRUNC(SYSDATE ,'YEAR') 01-JAN-03
3 - 30
Quiz
Which of the following statements are true about single-row
functions?
1. Manipulate data items
2. Accept arguments and return one value per argument
3. Act on each row that is returned
4. Return one result per set of rows
5. Can be nested
6. Accept arguments that can be a column or an
expression
3 - 31
Thank You