Les 03
Les 03
Single-Row Functions
Objectives
After
After completing
completing this
this lesson,
lesson, you
you should
should
be
be able
able to
to do
do the
the following:
following:
•• Describe
Describe various
various types
types of
of functions
functions
available
available in
in SQL
SQL
•• Use
Use character,
character, number,
number, andand date
date
functions
functions in
in SELECT
SELECT statements
statements
•• Describe
Describe the
the use
use of
of conversion
conversion
functions
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
3-4
Single-Row Functions
•• Manipulate
Manipulate data
data items
items
•• Accept
Accept arguments
arguments and
and return
return one
one value
value
•• Act
Act on
on each
each row
row returned
returned
•• Return
Return one
one result
result per
per row
row
•• May
May modify
modify the
the datatype
datatype
•• Can
Can be
be nested
nested
function_name
function_name (column|expression,
(column|expression, [arg1,
[arg1, arg2,...])
arg2,...])
3-5
Single-Row Functions
Character
General Number
Single-row
functions
Conversion Date
3-6
Character Functions
Character
functions
Convert
Convert case
case for
for character
character strings
strings
Function Result
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL Course') Sql Course
3-8
Using Case Conversion Functions
Display
Display the
the employee
employee number,
number, name,
name, and
and
department
department number
number for
for employee
employee Blake.
Blake.
SQL>
SQL> SELECT
SELECT empno,
empno, ename,
ename, deptno
deptno
22 FROM
FROM emp
emp
33 WHERE
WHERE ename
ename == 'blake';
'blake';
no
no rows
rows selected
selected
EMPNO
EMPNO ENAME
ENAME DEPTNO
DEPTNO
---------
--------- ----------
---------- ---------
---------
7698
7698 BLAKE
BLAKE 30
30
3-9
Character Manipulation Functions
Manipulate
Manipulate character
character strings
strings
Function Result
CONCAT('Good', 'String') GoodString
SUBSTR('String',1,3) Str
LENGTH('String') 6
INSTR('String', 'r') 3
LPAD(sal,10,'*') ******5000
3-10
Using the Character
Manipulation Functions
3-11
Number Functions
•• ROUND:
ROUND: Rounds
Rounds value
value to
to specified
specified
decimal
decimal
ROUND(45.926,
ROUND(45.926, 2)
2) 45.93
45.93
•• TRUNC:
TRUNC: Truncates
Truncates value
value to
to specified
specified
decimal
decimal
TRUNC(45.926,
TRUNC(45.926, 2)
2) 45.92
45.92
•• MOD:
MOD: Returns
Returns remainder
remainder of
of division
division
MOD(1600,
MOD(1600, 300)
300) 100
100
3-12
Using the ROUND Function
3-13
Using the TRUNC Function
3-14
Using the MOD Function
Calculate
Calculate the
the remainder
remainder ofof the
the ratio
ratio of
of
salary
salary to
to commission
commission for for all
all employees
employees
whose
whose job
job title
title is
is salesman.
salesman.
SQL> SELECT ename, sal, comm, MOD(sal, comm)
2 FROM emp
3 WHERE job = 'SALESMAN';
3-15
Working with Dates
•• Oracle
Oracle stores
stores dates
dates in
in an
an internal
internal
numeric
numeric format:
format: century,
century, year,
year, month,
month,
day,
day, hours,
hours, minutes,
minutes, seconds.
seconds.
•• The
The default
default date
date format
format is
is DD-MON-YY.
DD-MON-YY.
•• SYSDATE
SYSDATE is is aa function
function returning
returning date
date
and
and time.
time.
•• DUAL
DUAL isis aa dummy
dummy table
table used
used to
to view
view
SYSDATE.
SYSDATE.
3-16
Arithmetic with Dates
•• Add
Add or
or subtract
subtract aa number
number to to or
or from
from aa
date
date for
for aa resultant
resultant date
date value.
value.
•• Subtract
Subtract two
two dates
dates to
to find
find the
the number
number of of
days
days between
between those
those dates.
dates.
•• Add
Add hours
hours toto aa date
date by
by dividing
dividing the
the
number
number of of hours
hours byby 24.
24.
3-17
Using Arithmetic Operators
with Dates
ENAME WEEKS
---------- ---------
KING 830.93709
CLARK 853.93709
MILLER 821.36566
3-18
Date Functions
Function Description
3-19
Using Date Functions
• MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')
19.6774194
• LAST_DAY('01-SEP-95') '30-SEP-95'
3-20
Using Date Functions
• ROUND('25-JUL-95','MONTH') 01-AUG-95
• ROUND('25-JUL-95','YEAR') 01-JAN-96
• TRUNC('25-JUL-95','MONTH') 01-JUL-95
• TRUNC('25-JUL-95','YEAR') 01-JAN-95
3-21
Conversion Functions
Datatype
conversion
3-22
Implicit Datatype Conversion
For
For assignments,
assignments, the
the Oracle
Oracle can
can
automatically
automatically convert
convert the
the following:
following:
From To
VARCHAR2 or CHAR NUMBER
NUMBER VARCHAR2
DATE VARCHAR2
3-23
Implicit Datatype Conversion
For
For expression
expression evaluation,
evaluation, the
the Oracle
Oracle Server
Server
can
can automatically
automatically convert
convert the
the following:
following:
From To
VARCHAR2 or CHAR NUMBER
3-24
Explicit Datatype Conversion
TO_NUMBER TO_DATE
TO_CHAR TO_CHAR
3-25
TO_CHAR Function with Dates
TO_CHAR(date,
TO_CHAR(date, 'fmt')
'fmt')
The
The format
format model:
model:
•• Must
Must bebe enclosed
enclosed in
in single
single quotation
quotation marks
marks
and
and is
is case
case sensitive
sensitive
•• Can
Can include
include any
any valid
valid date
date format
format element
element
•• Has
Has an
an fm
fm element
element to
to remove
remove padded
padded
blanks
blanks oror suppress
suppress leading
leading zeros
zeros
•• Is
Is separated
separated from
from the
the date
date value
value by
by aa
comma
comma
3-26
Elements of Date Format Model
3-27
Elements of Date Format Model
• Time
Time elements
elements format
format the
the time
time portion
portion of
of
the
the date.
date.
HH24:MI:SS AM 15:45:32 PM
• Add
Add character
character strings
strings by
by enclosing
enclosing them
them
in
in double
double quotation
quotation marks.
marks.
DD "of" MONTH 12 of OCTOBER
• Number
Number suffixes
suffixes spell
spell out
out numbers.
numbers.
ddspth fourteenth
3-28
Using TO_CHAR Function
with Dates
SQL> SELECT ename,
2 TO_CHAR(hiredate, 'fmDD Month YYYY') HIREDATE
3 FROM emp;
ENAME HIREDATE
---------- -----------------
KING 17 November 1981
BLAKE 1 May 1981
CLARK 9 June 1981
JONES 2 April 1981
MARTIN 28 September 1981
ALLEN 20 February 1981
...
14 rows selected.
3-29
TO_CHAR Function with Numbers
TO_CHAR(number,
TO_CHAR(number, 'fmt')
'fmt')
Use
Use these
these formats
formats with
with the
the TO_CHAR
TO_CHAR
function
function to
to display
display aa number
number value
value as
as aa
character:
character:
9 Represents a number
0 Forces a zero to be displayed
$ Places a floating dollar sign
L Uses the floating local currency symbol
. Prints a decimal point
, Prints a thousand indicator
3-30
Using TO_CHAR Function
with Numbers
SALARY
--------
$3,000
3-31
TO_NUMBER and TO_DATE
Functions
•• Convert
Convert aa character
character string
string to
to aa number
number
format
format using
using the
the TO_NUMBER
TO_NUMBER function
function
TO_NUMBER(char[,
TO_NUMBER(char[, 'fmt'])
'fmt'])
•• Convert
Convert aa character
character string
string to
to aa date
date
format
format using
using the
the TO_DATE
TO_DATE function
function
TO_DATE(char[,
TO_DATE(char[, 'fmt'])
'fmt'])
3-32
RR Date Format
Current 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
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 The return date is in
50–99 in the century after the current century
the current one
3-33
NVL Function
Converts
Converts null
null to
to an
an actual
actual value
value
•• Datatypes
Datatypes that
that can
can be
be used
used are
are date,
date,
character,
character, and
and number.
number.
•• Datatypes
Datatypes must
must match
match
–– NVL(comm,0)
NVL(comm,0)
–– NVL(hiredate,'01-JAN-97')
NVL(hiredate,'01-JAN-97')
–– NVL(job,'No
NVL(job,'No Job
Job Yet')
Yet')
3-34
Using the NVL Function
3-35
DECODE Function
Facilitates
Facilitates conditional
conditional inquiries
inquiries by
by doing
doing
the
the work
work of
of aa CASE
CASE or
or IF-THEN-ELSE
IF-THEN-ELSE
statement
statement
DECODE(col/expression,
DECODE(col/expression, search1,
search1, result1
result1
[,
[, search2,
search2, result2,...,]
result2,...,]
[,
[, default])
default])
3-36
Using the DECODE Function
3-37
Using the DECODE Function
Display
Display the
the applicable
applicable tax
tax rate
rate for
for each
each
employee
employee in
in department
department 30.
30.
SQL> SELECT ename, sal,
2 DECODE(TRUNC(sal/1000, 0),
3 0, 0.00,
4 1, 0.09,
5 2, 0.20,
6 3, 0.30,
7 4, 0.40,
8 5, 0.42,
9 6, 0.44,
10 0.45) TAX_RATE
11 FROM emp
12 WHERE deptno = 30;
3-38
Nesting Functions
•• Single-row
Single-row functions
functions can
can be
be nested
nested to
to
any
any level.
level.
•• Nested
Nested functions
functions are
are evaluated
evaluated from
from
deepest
deepest level
level to
to the
the least-deep
least-deep level.
level.
F3(F2(F1(col,arg1),arg2),arg3)
Step 1 = Result 1
Step 2 = Result 2
Step 3 = Result 3
3-39
Nesting Functions
ENAME NVL(TO_CHAR(MGR),'NOMANAGER')
---------- -----------------------------
KING No Manager
3-40
Summary
Use
Use functions
functions to
to do
do the
the following:
following:
•• Perform
Perform calculations
calculations on
on data
data
•• Modify
Modify individual
individual data
data items
items
•• Manipulate
Manipulate output
output for
for groups
groups of
of rows
rows
•• Alter
Alter date
date formats
formats for
for display
display
•• Convert
Convert column
column datatypes
datatypes
3-41
Practice Overview
• Creating queries that require the use of numeric, character, and date functions
• Creating queries that require the use of numeric, character, and date functions
• Using concatenation with functions
• Using concatenation with functions
• Writing case-insensitive queries to test the usefulness of character functions
• Writing case-insensitive queries to test the usefulness of character functions
• Performing calculations of years and months of service for an employee
• Performing calculations of years and months of service for an employee
• Determining the review date for an employee
• Determining the review date for an employee
3-42