database programming sections 1 & 2 – case and character manipulations, number functions, date...

76
Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional expressions, Null functions

Upload: noreen-nicholson

Post on 21-Dec-2015

243 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Database Programming

Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional expressions, Null functions

Page 2: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 2

DUAL function

The DUAL table has one row called "X" and one column called "DUMMY.“

The DUAL table is used to create SELECT statements and execute commands not directly related to a specific database table.

Page 3: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 3

Single Row Functions Single row functions are very powerful pre-

defined code that accepts arguments and returns a value. An argument can be defined as a column name, an expression, or a constant.

There are five single row functions groups: Character Date General Number Conversion

Page 4: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Case/Character Manipulation

Marge Hohly 4

Page 5: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 5

Single Row Functions

Single-row character functions are divided into two categories: functions that convert the case of

character strings functions that can join, extract, show,

find, pad, and trim character strings.

Single-row functions can be used in the SELECT, WHERE, and ORDER BY clauses.

Page 6: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 6

Single Row Functions Character Functions (Case manipulation)

LOWER converts character strings to all lower case.SELECT last_nameFROM employeesWHERE last_name = ‘king’WHERE LOWER(last_name) = ‘king’ (should be this way)

UPPER converts character strings to all upper case.

INITCAP converts the first letter of each word to upper case and the remaining letters to lower case.

Page 7: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Case Manipulation

LOWER(column|expression) converts alpha characters to lower-case.

UPPER(column|expression) converts alpha character to upper case

INITCAP(column|expression) converts alpha character values to uppercase for the first letter of each word. (Title Case)

Marge Hohly 7

Page 8: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 8

Character Functions Character Functions (Case manipulation)

Function Result

LOWER (‘I Love SQL’) i love sql

UPPER (‘I love SQL’) I LOVE SQL

INITCAP(‘I Love SQL’) I Love Sql

Page 9: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 9

DUAL examples

SELECT LOWER('Marge')FROM dual;

SELECT UPPER(‘Hello’)FROM dual;

SELECT SYSDATEFROM dual;

Page 10: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 10

LOWER examples Create a query that outputs the CD titles in the DJ on

Demand database in all lowercase letters.

SELECT LOWER(title)FROM d_cds;

Create a query that selects the first names of the DJ on Demand clients who have an "a" somewhere in their name. Output the results set in all uppercase letters. Ask students why UPPER was put in the SELECT statement and not in the WHERE clause.

SELECT UPPER(first_name)FROM d_clientsWHERE first_name LIKE '%a%';

Page 11: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 11

Using LOWER, UPPER & INITCAP

Use LOWER, UPPER, & INITCAP in SELECT statement to affect the output of the data

Use in WHERE & ORDER BY to determine how data is chosen not displayed

SELECT last_name,job_idFROM employeesWHERE LOWER(job_id) = ‘it_prog‘;

SELECT UPPER(last_name),job_idFROM employees;

Page 12: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 12

Character Functions Character Functions (Character manipulation)

CONCAT joins two values together. SUBSTR extracts a string of characters from

a value. LENGTH shows the length of a string as a

numeric value. LPAD/RPAD pads specified character to the

left or right. INSTR finds the numeric position of a named

character. TRIM trims leading, trailing, or both

characters from a string. REPLACE replaces a string of characters.

Page 13: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 13

Single Row Functions Character Functions (Character manipulation)

Function ResultCONCAT(‘ABC’, ‘DEF’) ABCDEF

SUBSTR(‘ABCDEF’,2,3) BCD

LENGTH(‘ABCDEF’) 6

INSTR(‘ABCDEF’,’C’) 3

Page 14: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 14

Try these

SELECT SUBSTR(hire_date, 2, 4)FROM employees;

SELECT LENGTH(last_name), last_nameFROM employees;

SELECT LPAD(‘123-56-8901’,15,’*’)FROM dual;

Page 15: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 15

Single Row Functions Character Functions (Character manipulation)

Function Result

LPAD (salary,9,’*’) ****15000

RPAD (salary,9,’*’) 15000****

TRIM (leading ‘A’ from ‘ABCA’)trailing or both

BC

REPLACE(‘ABC’,’B’,’*’) A*C

Page 16: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 16

Try These

SELECT LPAD(salary, 9, '*')FROM employees;

SELECT TRIM(trailing 'a’ from 'abbba')FROM dual;

SELECT TRIM(both 'a’ from 'abbba')FROM dual;

SELECT REPLACE('ABC', 'B','*')FROM dual;

Page 17: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Terminology Review DUAL- Dummy table used to view results from

functions and calculations Format-The arrangement of data for storage or

display. INITCAP-Converts alpha character values to

uppercase for the first letter of each word, all other letters in lowercase.

Marge Hohly 17

Page 18: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Terminology cont. Character functions-Functions that accept

character data as input and can return both character and numeric values.

TRIM-Removes all specified characters from either the beginning or the ending of a string.

Expression -A symbol that represents a quantity or a relationship between quantities

Marge Hohly 18

Page 19: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Terminology cont. Single- row functions-Functions that operate on

single rows only and return one result per row UPPER-Converts alpha characters to upper case Input-Raw data entered into the computer CONCAT-Concatenates the first character value

to the second character value; equivalent to concatenation operator (||).

Marge Hohly 19

Page 20: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Terminology cont. Output-Data that is processed into information LOWER-Converts alpha character values to

lowercase. LPAD-Pads the left side of a character, resulting

in a right-justified value SUBSTR-Returns specific characters from

character value starting at a specific character position and going specified character positions long

Marge Hohly 20

Page 21: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Use Alias in Functions

Aliases can be used in commands to replace column name etc.

SELECT LOWER(SUBSTR(first_name,1,1)) ||LOWER(last_name) AS “User Name”FROM f_staffs;

Marge Hohly 21

Page 22: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Terminology cont. REPLACE-Replaces a sequence of characters in

a string with another set of characters. INSTR-Returns the numeric position of a named

string. LENGTH-Returns the number of characters in

the expression RPAD-Pads the right-hand side of a character,

resulting in a left- justified value.

Marge Hohly 22

Page 23: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Substitution Variables

To keep from running the same query multiple times and needing to edit it each time use a substitution variable

APEX supports substitution variables Variable format :named_variable APEX will ask you for the value each

time you run the query.

Marge Hohly 23

Page 24: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Substitution Variables Examples

SELECT first_name, last_name, salary, department_idFROM employeesWHERE department_id = 10; (and then 20, 30, 40,….)

Rewrite using a substitution variable SELECT first_name, last_name, salary,

department_idFROM employeesWHERE department_id = :dept_id;

Marge Hohly 24

Page 25: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 25

Single Row Functions Number Functions

ROUND rounds a value to specified position. TRUNC truncates a value to a specified position. MOD returns the remainder of a divide

operation.

Page 26: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Single Row Functions Number Functions

ROUND rounds a value to specified position. ROUND(column|expression, decimal places) Default is 0 decimals

SELECT ROUND(45.927, 2), ROUND(45.927, 0), ROUND(45.927), ROUND(45.927, -1) FROM dual;

Marge Hohly 26

Page 27: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Single Row Functions TRUNC truncates a value to a specified position.

TRUNC(column|expression, decimal places) SELECT TRUNC(45.927, 2),TRUNC(45.927,

0),TRUNC(45.927),TRUNC(45.927, -1) FROM dual;

TRUNC(45.927, 2) = 45.92 TRUNC(45.927, 0) = 45 TRUNC(45.927) = 45 TRUNC(45.927, -1) = 40

Marge Hohly 27

Page 28: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Mod demo MOD returns the remainder of a divide operation.

MOD(1st value, 2nd value) The 1st value is divided by the 2nd value SELECT MOD(600, 500)

FROM dual; MOD(dividend, divisor) = remainder SELECT last_name, salary, MOD(salary, 2) AS

“Mod Demo”FROM f_staffsWHERE staff_type IN(‘Order Taker’, ‘Cook’, ‘Manager’);

Marge Hohly 28

Page 29: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 29

Single Row Functions Working with Dates

the default display and input format for any date is DD-MON-RR. For example: 12-OCT-05 (more on RR later)

SYSDATE is a date function that returns the current database server date and time.

the Oracle database stores dates in an internal numeric format. Which means arithmetic operations can be performed on dates.

default date DD-MON-RR. Oracle dates are between 1/1/4712 B.C. and 12/31/9999 A.D.

Stores year as a 4 digit value, 2 digit century, 2 digit year

Page 30: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Date Functions Example

Marge Hohly 30

Page 31: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 31

Examples SELECT SYSDATE

FROM DUAL; SELECT (SYSDATE - hire_date)/7 AS "No. of

Weeks“FROM employees;

SELECT MONTHS_BETWEEN(SYSDATE, '01-Jan-87') AS "no. of months“FROM dual;

SELECT ROUND(MONTHS_BETWEEN(SYSDATE, '01-Jan-87'),2) AS "no. of months“FROM dual;

SELECT NEXT_DAY('01-Sep-95','Friday')FROM dual;

Page 32: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 32

Date FunctionsFunctions Description

months_between # of months between 2 dates

add_months Add calendar months to date

next_day Next day of the date specified (like Friday)

last_date Last day of month (date)

ROUND Round date

TRUNC Truncate date

Page 33: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 33

Single Row Functions Working with Dates (a few examples)

SELECT last_name, hire_date + 60 AS "Review Date“FROM employees;

SELECT last_name, (SYSDATE-hire_date)/7FROM employees;

SELECT order_no,amt_due,purch_date + 30 AS "Due Date“FROM transactions;

Page 34: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 34

Single Row Functions Date Functions

MONTHS_BETWEEN returns the number of months between two dates.

ADD_MONTHS adds a number of months to a date.

NEXT_DAY returns the date of the next specified day of the week.

LAST_DAY returns the date of the last day of the specified month.

ROUND returns the date rounded to the unit specified.

TRUNC returns the date truncated to the unit specified.

Page 35: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 35

Single Row Functions Date Functions (a few examples)

Functions Result

MONTHS_BETWEEN(’01-SEP-92’,’01-JUN-91’)

15

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’

Page 36: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 36

Single Row Functions Date Functions (a few more examples)

Assume SYSDATE = ’25-JUL-95’

Function Result

ROUND(SYSDATE,’MONTH’) ’01-AUG-95’

ROUND(SYSDATE,’YEAR’) ’01-JAN-96’

TRUNC(SYSDATE,’MONTH’) ’01-JUL-95’

TRUNC(SYSDATE,’YEAR’) ’01-JAN-95’

Page 37: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 37

Date Types

Data Typeconversion

Implicit data typeconversion

Explicit data typeconversion

Page 38: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Data Types VARCHAR2: Used for character data of variable length,

including numbers, special characters, and dashes. CHAR: Used for text and character data of fixed length,

including numbers, dashes, and special characters. NUMBER: Used to store variable-length numeric data.

No dashes, text, or other nonnumeric data are allowed. Currency is stored as a number data type.

DATE: Used for date and time values. Internally, Oracle stores dates as numbers and by default DATE information is displayed as DD-MON-YY (for example, 16-OCT-07).

Marge Hohly 38

Page 39: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 39

Implicit Data Type Conversion For assignments, the Oracle serve can

automatically convert the following:

From To

VARCHAR2 or CHAR NUMBER

VARCHAR2 or CHAR DATE

NUMBER VARCHAR2

DATE VARCHAR2

Page 40: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 40

Explicit Type Conversion

TO_NUMBER TO_DATE

CHARACTERNUMBER DATE

TO_CHAR TO_CHAR

Page 41: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 41

Using the TO_CHAR Function with Dates

The format model: TO_CHAR(date column name, ‘format model

you specify’) 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

Page 42: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Using the TO_CHAR Function with Dates

Use sp to spell out a number Use th to have the number appear as

an ordinal Use double quotation marks to add

character strings to format models

Marge Hohly 42

Page 43: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 43

Elements of the Date Format Model

YYYY YEAR MM MONTH MON

DY

DAY DD

Full year in numbers Year spelled out Two-digit value for month Full name of the month Three-letter abbreviation of the

month Three-letter abbreviation of the

day of the week Full name of the day of the week Numeric day of the month

Page 44: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Date Conversion to Character Data

HH24:MI:SS AM DD “of” MONTH DDspth Ddspth ddspth DDD or DD or D

15:45:32 PM 12 of October FOURTEENTH Fourteenth Fourteenth Day of year,

month or week

Marge Hohly 44

Page 45: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 45

Examples of Date formatting Date conversion to character data

June 19th, 2004      TO_CHAR(hire_date, 'Month ddth, YYYY')

January 1, 2000      TO_CHAR(hire_date, 'fmMonth dd, YYYY')

MAR 5, 2001           TO_CHAR(hire_date, 'fmMON dd, YYYY')

June 17th Wednesday Nineteen Eighty-Seven        TO_CHAR(hire_date, 'Month ddth Day YYYYSP')

Page 46: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 46

Examples

Using the current SYSDATE display it in the following format August 6th, 2004 August 06, 2004 AUG 6, 2004 August 6th, Friday, Two Thousand Four

Page 47: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 47

Using Date Format SELECT employee_id,

TO_CHAR(hire_date,'MM/YY') Month_HiredFROM employeesWHERE last_name = 'Higgins';

EMPLOYEE_ID MONTH_HIRED

205 06/94

Page 48: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 48

Elements of the Date Format Model

Time elements format the time portion of the date.

Add character strings by enclosing them in double quotation marks.

Number suffixes spell out numbers.

HH24:MI:SS AM 15:45:32 PM

Ddspth fourteenth

DD “of” MONTH 12 of OCTOBER

Page 49: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 49

Using the TO_CHAR Function with Dates

SELECT last_name, TO_CHAR(hire_date, 'fmDD Month YYYY') AS HIREDATEFROM employees;

LAST_NAME HIREDATEKing 17 June 1987

Kochhar 21 September 1989

De Haan 13 January 1993

Whalen 17 September 1987

Higgins 7 June 1994

Gietz 7 June 1994

Page 50: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 50

Using the TO_CHAR Function with Numbers TO_CHAR (number, ‘format_model’)

These are some of the format elements you can use 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

B Display zero values as blanks not 0

Page 51: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 51

Number conversions to Character (VARCHAR2)

Can you identify the format models used to produce the following output? $3000.00 4,500 9,000.00 0004422

Page 52: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 52

Using the TO_CHAR Function with Numbers

SELECT TO_CHAR(salary, '$99,999.00') SALARYFROM employeesWHERE last_name = 'Ernst‘;

SALARY

$6,000.00

Page 53: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 53

Using the 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’])

These functions have a fx modifier. This modifier specifies the exact matching for the character argument and date format model of a TO_DATE function

Page 54: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 54

Using fx modifier

Use the fx modifier to format dates exactly as follows June19     2004 July312004

Format your birth date use DUAL Example June 19, 1990

Page 55: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 55

RR Date Format-dates over 2 centuriesCurrent Date Specified Date RR Format YY Format

1995 27-OCT-95 1995 1995

1995 27-OCT-17 2017 1917

2008 27-OCT-17 2017 2017

2008 27-OCT-95 1995 2095

If the specified two-digit year is:

0-49 50-99

If two digits of the current year are:

0-49 The return date is in the current century

The return date is in the century before the current one

50-99 The return date is in the century after the current one

The return date is in the current century

Page 56: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

RR or RRRR Simple Rules

Marge Hohly 56

Page 57: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 57

Example of RR Date Format To find employees hired prior to 1990, use the RR format,

which produces the same results whether the commands is run in 1999 or now:

SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')FROM employeesWHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-RR');

LAST_NAME TO_CHAR(HIRE_DATE,'DD-MON-YYYY')

King 17-Jun-87

Kochhar 21-Sep-89

Whalen 17-Sep-87

Page 58: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 58

Try this

SELECT last_name, hire_date, TO_CHAR(hire_date, 'DD-Mon-RRRR')FROM employeesWHERE TO_DATE(hire_date, 'dd-mon-RR') < '01 Jan 1999‘;

Page 59: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 59

YY and RR SELECT TO_CHAR(TO_DATE(hire_date, 'DD-

Mon-RR'),'DD Mon YYYY') AS "RR Example“FROM employees;

SELECT TO_CHAR(TO_DATE(hire_date, 'DD-Mon-YY'),'DD Mon YYYY') AS "YY Example“FROM employees;

YY Example17 Jun 208721 Sep 208913 Jan 2093

RR Example17 Jun 198721 Sep 198913 Jan 1993

Page 60: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 60

Examples2. Convert January 3, 2004, to the default date format 03-

JAN-04.

4. Convert today's date to a format such as: "Today is the Twentieth of March, Two Thousand Four“

8. Create one query that will convert 25-DEC-04 into each of the following (you will have to convert 25-DEC-04 to a date and then to character data): December 25th, 2004 DECEMBER 25TH, 2004 december 25th, 2004

Page 61: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 61

Nested Functions

Nesting is allowed to any depth Evaluate from the inside out

Page 62: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 62

Page 63: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 63

Null Functions

Null is unavailiable, unassigned, unknown, or inapplicable. NVL NVL2 NULLIF COALESCE

Page 64: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 64

NVL FUNCTION NVL function converts a null value to a

date, a character, or a number. The data types of the null value column and

the new value must be the same. NVL (value that may contain a null, value to

replace the null) can be used to convert column values

containing nulls to a number before doing calculations.

When arithmetic calculation is performed with null, the result is null.

Page 65: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 65

NVL FUNCTION examples SELECT NVL(auth_expense_amt,0)

FROM d_partners; SELECT NVL(hire_date,'01-JAN-97')

FROM employees; SELECT NVL(specialty,'None Yet')

FROM d_partners; SELECT first_name,

last_name,NVL(auth_expense_amt, 0) * 1.05 AS ExpensesFROM D_Partners;

Page 66: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 66

NVL2  FUNCTION NVL2 (expression 1 value that may contain

a null, expression 2 value to return if expression 1 is not null, expression 3 value to replace if expression 1 is null)

SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) incomeFROM employees;

Page 67: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 67

NULLIF FUNCTION NULLIF function compares two functions. If they are equal, the function returns null. If they are not equal, the function returns

the first expression. The NULLIF function is:

NULLIF(expression 1, expression 2) SELECT first_name, LENGTH(first_name) "Expression

1",last_name, LENGTH(last_name) "Expression 2", NULLIF(LENGTH(first_name), LENGTH(last_name)) AS "Compare Them“FROM D_PARTNERS;

Page 68: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 68

COALESCE  FUNCTION

The COALESCE function is an extension of the NVL function, except COALESCE can take multiple values.

If the first expression is null, the function continues down the line until a not null expression is found.

Returns the first not null expression If the first expression has a value, the

function returns the first expression and the function stops.

Page 69: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 69

Examples Section 2 Lesson 2

2. Not all Global Fast Foods staff members receive overtime pay. Instead of displaying a null value for these employees, replace null with zero. Include the employee's last name and overtime rate in the output. Label the overtime rate as "Overtime Status."

4. Not all Global Fast Foods staff members have a manager. Create a query that displays the employee last name and 9999 in the manager ID column for these employees.

Page 70: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 70

Conditional Expressions Provide the use of IF-THEN-ELSE logic within a

SQL statement Use two methods:

CASE expressions DECODE function

Page 71: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 71

Page 72: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 72

CASE Function – when – then - else

Facilitates conditional inquiries by doing the work of an IF-THEN-ELSE statement:

SELECT last_name, job_id, salary, CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'ST_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END "REVISED_SALARY“FROM employees;

Page 73: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

DECODE format

DECODE (column1|expression, search1, result1, search2, result2,….., default)

SELECT id, loc_type,rental_fee,DECODE(loc_type,’Private Home’, ‘No increase’, ’Hotel’,’Increase 5%’, rental_fee)AS “Revised_Fees”FROM d_venues;

Marge Hohly 73

Page 74: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 74

DECODE Function Facilitates conditional inquires by doing the

work of a CASE or IF_THEN_ELSE statement:

SELECT last_name, job_id, salary, DECODE(job_id, 'IT_PROG',1.10*salary, 'ST_CLERK',1.15*salary, 'SA_REP',1.20*salary, salary) "REVISED_SALARY“FROM employees;

Page 75: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 75

DECODE ExampleSELECT last_name, salary, DECODE (TRUNC(salary/2000, 0), 0,0.00, 1,0.09, 2,0.20, 3,0.30, 4,0.40, 5,0.42, 6,0.44, 0.45) TAX_RATEFROM employeesWHERE department_id = 80;

Monthly Salary Range Rate$0.00 – 1999.99 00%$2,000.00 – 3,999.99 09%$4,000.00 – 5,999.99 20%$6,000.00 – 7,999.99 30%$8,000.00 – 9,999.99 40%$10,000.00 – 11,999.99 42%$12,200.00 – 13,999.99 44%$14,000.00 or greater 45%

Page 76: Database Programming Sections 1 & 2 – Case and Character Manipulations, number functions, date functions, conversion functions, general functions, conditional

Marge Hohly 76

Practice1. For each Global Fast Foods promotional

menu, display the event name, and calculate the number of months between today and the ending date of the promotion. Round the months to a whole number. Label the column "Past Promos."

2. Use the Oracle database to write a query that returns the salary for employee 174 as:

Ellen Abel earns $11000.00 monthly but wants $14000.00