Enhanced Guide to Oracle 10g
Chapter 3:
Using SQL Queries to Insert,
Update, Delete, and View Data
By: Deepak Malusare 1
Single-Row Functions
By: Deepak Malusare 2
Objectives
After completing this lesson, you should be
able to do the following:
Describe various types of functions available
in SQL
Use character, number, and date functions in
SELECT statements
Describe the use of conversion functions
By: Deepak Malusare 3
SQL Functions
Input Output
Function
arg 1 Function
performs action
arg 2
Result
value
arg n
By: Deepak Malusare 4
Two Types of SQL Functions
Functions
Single-row Multiple-row
functions functions
By: Deepak Malusare 5
Single-Row Functions
Manipulate data items
Accept arguments and return one value
Act on each row returned
Return one result per row
May modify the datatype
Can be nested
function_name (column|expression, [arg1, arg2,...])
By: Deepak Malusare 6
Single-Row Functions
Character
General Number
Single-row
functions
Conversion Date
By: Deepak Malusare 7
Character Functions
Character
functions
Case conversion Character manipulation
functions functions
LOWER CONCAT
UPPER SUBSTR
INITCAP LENGTH
INSTR
LPAD, RPAD
TRIM, LTRIM, RTRIM
REPLACE
By: Deepak Malusare 8
Character Functions
CONCAT – joins 2 character strings
INITCAP – returns a string with the initial letter only uppercase
LENGTH – returns the length of a string
LPAD, RPAD – returns a string with a specific number of
characters added on the left or right side
LTRIM, RTRIM – returns a string with all instances of a specific
character trimmed from the left or right side
REPLACE – replaces all instances of a character with another
character
UPPER/LOWER – returns a string in all upper/lower case
letters
SUBSTR
INSTR
By: Deepak Malusare 10
Case Conversion Functions
Convert case for character strings
Function Result
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL Course') Sql Course
By: Deepak Malusare 11
Using Case Conversion Functions
Display the employee number, name, and
department number for employee Blake.
SQL> SELECT empno, ename, deptno
2 FROM emp
3 WHERE ename = 'blake';
no rows selected
SQL> SELECT empno, ename, deptno
2 FROM emp
3 WHERE ename = UPPER('blake');
EMPNO ENAME DEPTNO
--------- ---------- ---------
7698 BLAKE 30
By: Deepak Malusare 12
Character Manipulation
Functions
Manipulate character strings
Function Result
CONCAT('Good', 'String') GoodString
SUBSTR('String',1,3) Str
LENGTH('String') 6
INSTR('String', 'r') 3
LPAD(sal,10,'*') ******5000
TRIM('S' FROM 'SSMITH') MITH
By: Deepak Malusare 13
Using the Character
Manipulation Functions
SQL> SELECT ename, CONCAT (ename, job), LENGTH(ename),
2 INSTR(ename, 'A')
3 FROM emp
4 WHERE SUBSTR(job,1,5) = 'SALES';
ENAME CONCAT(ENAME,JOB) LENGTH(ENAME) INSTR(ENAME,'A')
---------- ------------------- ------------- ----------------
MARTIN MARTINSALESMAN 6 2
ALLEN ALLENSALESMAN 5 1
TURNER TURNERSALESMAN 6 0
WARD WARDSALESMAN 4 2
By: Deepak Malusare 14
Number Functions
ABS - absolute value
CEIL – rounds a number up to the next integer
FLOOR – rounds a number down to the previous
integer
MOD – returns the remainder of a number and a
divisor
POWER - raises a number to an exponent
ROUND - rounds a number
SQRT – returns the square root of a value
TRUNC - truncates a number to the nearest whole
number
By: Deepak Malusare 15
Number Functions
ROUND: Rounds value to specified
decimal
ROUND(45.926, 2)
45.93
TRUNC: Truncates value to specified
decimal
TRUNC(45.926, 2)
45.92
MOD: Returns remainder of division
MOD(1600, 300)
100
By: Deepak Malusare 16
Using the ROUND Function
SQL> SELECT ROUND(45.923,2), ROUND(45.923,0),
2 ROUND(45.923,-1)
3 FROM DUAL;
ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)
--------------- -------------- -----------------
45.92 46 50
By: Deepak Malusare 17
Using the TRUNC Function
SQL> SELECT TRUNC(45.923,2), TRUNC(45.923),
2 TRUNC(45.923,-1)
3 FROM DUAL;
TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-1)
--------------- ------------- ---------------
45.92 45 40
By: Deepak Malusare 18
Using the MOD Function
Calculate the remainder of the ratio of
salary to commission for all employees
whose job title is salesman.
SQL> SELECT ename, sal, comm, MOD(sal, comm)
2 FROM emp
3 WHERE job = 'SALESMAN';
ENAME SAL COMM MOD(SAL,COMM)
---------- --------- --------- -------------
MARTIN 1250 1400 1250
ALLEN 1600 300 100
TURNER 1500 0 1500
WARD 1250 500 250
By: Deepak Malusare 19
Working with Dates
Oracle stores dates in an internal numeric
format: century, year, month, day, hours,
minutes, seconds.
The default date format is DD-MON-YY.
SYSDATE is a function returning date and
time.
DUAL is a dummy table used to view
SYSDATE.
By: Deepak Malusare 20
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.
Add hours to a date by dividing the number of
hours by 24.
By: Deepak Malusare 21
Date Arithmetic
To find a date that is a specific number of
days before or after a known date, add or
subtract the number from the known date
Example:
SELECT order_date + 30
FROM cust_order;
By: Deepak Malusare 22
Date Arithmetic
To find the number of days between two
known dates, subtract the later date from
the earlier date
Example:
SELECT SYSDATE – s_dob
FROM my_students;
By: Deepak Malusare 23
Using Arithmetic Operators
with Dates
SQL> SELECT ename, (SYSDATE-hiredate)/7 WEEKS
2 FROM emp
3 WHERE deptno = 10;
ENAME WEEKS
---------- ---------
KING 830.93709
CLARK 853.93709
MILLER 821.36566
By: Deepak Malusare 24
Date Functions
Function Description
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
By: Deepak Malusare 25
Using Date Functions
• MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')
19.6774194
• ADD_MONTHS ('11-JAN-94',6) '11-JUL-94'
By: Deepak Malusare 26
Date Functions
ADD_MONTHS
returns a date that is a specific number of months
after a given date
Example:
SELECT ADD_MONTHS(SYSDATE, 6)
FROM dual;
By: Deepak Malusare 27
Date Functions
LAST_DATE
Returns the date that is the last day of the month
specified in the current date
Example:
SELECT LAST_DATE(order_date)
FROM cust_order
WHERE order_id = 1057;
By: Deepak Malusare 28
Date Functions
MONTHS_BETWEEN
Returns the number of months between two
input dates
Example:
SELECT MONTHS_BETWEEN(order_date,
SYSDATE)
FROM cust_order
WHERE order_id = 1057;
By: Deepak Malusare 29
Conversion Functions
Datatype
conversion
Implicit datatype Explicit datatype
conversion conversion
By: Deepak Malusare 30
Explicit Datatype Conversion
TO_NUMBER TO_DATE
NUMBER CHARACTER DATE
TO_CHAR TO_CHAR
By: Deepak Malusare 31
TO_CHAR Function with Dates
TO_CHAR(date, 'fmt')
The format model:
Must be enclosed in single quotation marks and is
case sensitive
Can include any valid date format element
Has an fm element to remove padded blanks or
suppress leading zeros
Is separated from the date value by a comma
By: Deepak Malusare 34
Elements of Date Format Model
YYYY Full year in numbers
YEAR Year spelled out
MM Two-digit value for month
MONTH Full name of the month
Three-letter abbreviation of the
DY
day of the week
DAY Full name of the day
By: Deepak Malusare 35
Using TO_CHAR Function
with Dates
SQL> SELECT ename,
2 TO_CHAR(hiredate, 'DD 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.
By: Deepak Malusare 36
TO_CHAR Function with Numbers
TO_CHAR(number, 'fmt')
Use these formats with the TO_CHAR function
to display a number value as a 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
By: Deepak Malusare 37
Using TO_CHAR Function
with Numbers
SQL> SELECT TO_CHAR(sal,'$99,999') SALARY
2 FROM emp
3 WHERE ename = 'SCOTT';
SALARY
--------
$3,000
By: Deepak Malusare 38
TO_NUMBER and
TO_DATE Functions
Convert a character string to a number format
using the TO_NUMBER function
TO_NUMBER(char[, 'fmt'])
• Convert a character string to a date
format using the TO_DATE function
TO_DATE(char[, 'fmt'])
By: Deepak Malusare 39
NVL Function
Converts null to an actual value
Datatypes that can be used are date, character,
and number.
Datatypes must match
NVL(comm,0)
NVL(hiredate,'01-JAN-97')
NVL(job,'No Job Yet')
By: Deepak Malusare 40
Using the NVL Function
SQL> SELECT ename, sal, comm, (sal*12)+NVL(comm,0)
2 FROM emp;
ENAME SAL COMM (SAL*12)+NVL(COMM,0)
---------- --------- --------- --------------------
KING 5000 60000
BLAKE 2850 34200
CLARK 2450 29400
JONES 2975 35700
MARTIN 1250 1400 16400
ALLEN 1600 300 19500
...
14 rows selected.
By: Deepak Malusare 41
Nesting Functions
Single-row functions can be nested to any level.
Nested functions are evaluated from deepest level to
the least-deep level.
F3(F2(F1(col,arg1),arg2),arg3)
Step 1 = Result 1
Step 2 = Result 2
Step 3 = Result 3
By: Deepak Malusare 42
Nesting Functions
SQL> SELECT ename,
2 NVL(TO_CHAR(mgr),'No Manager')
3 FROM emp
4 WHERE mgr IS NULL;
ENAME NVL(TO_CHAR(MGR),'NOMANAGER')
---------- -----------------------------
KING No Manager
By: Deepak Malusare 43
Summary
Use functions to do the following:
Perform calculations on data
Modify individual data items
Manipulate output for groups of rows
Alter date formats for display
Convert column datatypes
By: Deepak Malusare 44