Lab 8
Single Row Functions
SQL FUNCTIONS
Input Output
Function
arg 1 Function performs
action
arg 2
Result
value
arg n
SQL Functions Types
SQL Functions
Single-row Multiple-row
functions functions
Return one result Return one result
per row per set of rows
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.
Can be used in SELECT, WHERE, and ORDER BY clauses.
function_name (column|expression, [arg2, arg3,...])
Single-Row Functions
Character
Single-row
General Number
functions
Conversion Date
Character Functions
Character
functions
Case-manipulation Character-manipulation
functions functions
LOWER CONCAT
UPPER SUBSTR
INITCAP LENGTH
INSTR
LPAD | RPAD
TRIM
REPLACE
Case Manipulation Functions
LOWER: Converts mixed case or uppercase character
string to lowercase.
UPPER: Converts mixed case or lowercase character
string to uppercase.
INITCAP: Converts first letter of each word to uppercase
and remaining letters to lowercase.
Case Manipulation Functions
Function Result
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL Course') Sql Course
Case Manipulation 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';
no rows selected
SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'higgins';
Character Manipulation Functions
CONCAT: Joins values together (You are limited to using
two parameters with CONCAT.)
SUBSTR: Extracts a string of determined length
LENGTH: Shows the length of a string as a numeric
value
INSTR: Finds numeric position of a named character
LPAD: Pads the character value right-justified
RPAD : Pads the character value left-justified
TRIM: Trims heading or trailing characters (or both) from
a character string.
Character Manipulation Functions
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 ('JACK and JUE','J','BL') BLACK and BLUE
TRIM('H' FROM 'HelloWorld') elloWorld
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
Number Functions
Function Result
ROUND(45.926, 2) 45.93
TRUNC(45.926, 2) 45.92
MOD(1600, 300) 100
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.
TRUNC Function
1 2
SELECT ROUND(45.923,2), ROUND(45.923),
ROUND(45.923,-1) 3
FROM DUAL;
1 2 3
MOD Function
For all employees with 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';
Working with Dates
The Oracle database stores dates in an internal numeric
format: century, year, month, day, hours, minutes, and
seconds.
The default date display format is DD-MON-RR.
SYSDATE is a date function that returns the current date
and time.
SELECT last_name, hire_date
FROM employees
WHERE hire_date < '01-FEB-88';
Arithmetic with Dates
Arithmetic Operators with Dates
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE department_id = 90;
Date 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
Using Date Functions
Function Result
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194
ADD_MONTHS ('11-JAN-94',6) '11-JUL-94'
NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95'
LAST_DAY ('01-FEB-95') '28-FEB-95'
Using Date Functions
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
Conversion Functions
Data type
conversion
Implicit data type Explicit data type
conversion conversion
Implicit Data Type Conversion
For assignments, the Oracle server can automatically
convert the following:
From To
VARCHAR2 or CHAR NUMBER
VARCHAR2 or CHAR DATE
NUMBER VARCHAR2
DATE VARCHAR2
Implicit Data Type Conversion
For expression evaluation, the Oracle Server can
automatically convert the following:
From To
VARCHAR2 or CHAR NUMBER
VARCHAR2 or CHAR DATE
Notes:
CHAR to NUMBER conversions succeed only if the
character string represents a valid number.
CHAR to DATE conversions succeed only if the character
string has the default format DD-MON-YY.
Explicit Data Type Conversion
TO_NUMBER TO_DATE
NUMBER CHARACTER DATE
TO_CHAR TO_CHAR
TO_CHAR Function with Dates
TO_CHAR(date,'format_model')
The format model:
• Must be enclosed by single quotation marks
• 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
Elements of the Date Format Model
Element Result
YYYY Full year in numbers
YEAR Year spelled out (in English)
MM Two-digit value for month
MONTH Full name of the month
MON Three-letter abbreviation of the month
DY Three-letter abbreviation of the day of the week
DAY Full name of the day of the week
DD Numeric day of the month
Elements of the Date Format Model
• Time elements format the time portion of the date:
HH24:MI:SS AM 15:45:32 PM
• Add character strings by enclosing them in double
quotation marks:
DD "of" MONTH 12 of OCTOBER
• Number suffixes spell out numbers:
ddspth fourteenth
TO_CHAR Function with Dates
TO_CHAR Function with Numbers
TO_CHAR(number, 'format_model')
These are some of the format elements that you can use
with the TO_CHAR function to display a number value as a
character:
Element Result
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 comma as thousands indicator
TO_CHAR Function with Numbers
SELECT TO_CHAR(salary, '$99,999.99') SALARY
FROM employees
WHERE last_name = 'Ernst';
NOTES
• The Oracle Server rounds the stored decimal value to the
number of decimal spaces provided in the format model.
• The Oracle Server displays a string of pound signs (#) in place
of a whole number whose digits exceed the number of digits
provided in the format model.
TO_NUMBER and TO_DATE
Functions
• Convert a character string to a number format using the
TO_NUMBER function:
TO_NUMBER(char[,'format_model'])
• Convert a character string to a date format using the
TO_DATE function:
TO_DATE(char[,'format_model'])
TO_DATE
General Functions
The following functions work with any data type and
pertain to using NULLs:
NVL (expr1, expr2)
NVL2 (expr1, expr2, expr3)
NULLIF (expr1, expr2)
NVL Function
Converts a NULL value to an actual value:
Data types that can be used are date, character,
and number.
Data types must match:
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')
NVL Function
1
SELECT last_name, salary, NVL(commission_pct, 0),
(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL
FROM employees;
2
1 2
NVL2 Function
SELECT last_name, salary, commission_pct, 1
NVL2(commission_pct,
'SAL+COMM', 'SAL') income 2
FROM employees WHERE department_id IN (50, 80);
1 2
NULLIF Function
1
SELECT first_name, LENGTH(first_name) "expr1",
last_name, LENGTH(last_name) "expr2", 2
NULLIF(LENGTH(first_name), LENGTH(last_name)) result 3
FROM employees;
1 2 3
Nesting Functions
• Single-row functions can be nested to any level.
• Nested functions are evaluated from the 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
Nesting Functions
SELECT last_name,
UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US'))
FROM employees
WHERE department_id = 60;
THANK YOU