chapter 4 character, number, and miscellaneous functions

38
DATA WAREHOUSING TARLETON STATE UNIVERSITY MATH 586 INSTRUCTORS: KEITH EMMERT, SEAN PERRY, MICHA ROBERSON, AND MICHAEL SCHUCKING COURSE MATERIALS: ORACLE SQL BY EXAMPLE, 4 TH EDITION BY ALICE RISCHERT SOFTWARE: ORACLE 11G TEXTBOOK RESOURCE WEBSITE: HTTP://WWW.ORACLESQLBYEXAMPLE.COM/ COURSE OBJECTIVES: UNDERSTAND AND APPLY FUNDAMENTAL SQL FUNCTIONS, EXPRESSIONS, COMMANDS ETC. A. CREATE/DROP TABLES/DATABASE B. QUERY TABLES C. USE AGGREGATE FUNCTIONS D. USE INNER/OUTER/LEFT/RIGHT JOINS E. WRITE QUERIES WITH STRING, NUMERIC, CONVERSION, AND DATE/TIME FUNCTIONS. CONDUCT QA AND INTEGRITY CHECKS.

Upload: seoras

Post on 22-Feb-2016

83 views

Category:

Documents


0 download

DESCRIPTION

- PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter 4 Character, number, and Miscellaneous functions

DATA WAREHOUSINGTARLETON STATE UNIVERSITYMATH 586

INSTRUCTORS: KEITH EMMERT, SEAN PERRY, MICHA ROBERSON, AND

MICHAEL SCHUCKING

COURSE MATERIALS: ORACLE SQL BY EXAMPLE, 4TH EDITION BY ALICE RISCHERTSOFTWARE: ORACLE 11GTEXTBOOK RESOURCE WEBSITE:

HTTP://WWW.ORACLESQLBYEXAMPLE.COM/COURSE OBJECTIVES:UNDERSTAND AND APPLY FUNDAMENTAL SQL FUNCTIONS, EXPRESSIONS, COMMANDS ETC.

A. CREATE/DROP TABLES/DATABASEB. QUERY TABLESC. USE AGGREGATE FUNCTIONSD. USE INNER/OUTER/LEFT/RIGHT JOINSE. WRITE QUERIES WITH STRING, NUMERIC,

CONVERSION, AND DATE/TIME FUNCTIONS. CONDUCT QA AND INTEGRITY CHECKS.

Page 2: Chapter 4 Character, number, and Miscellaneous functions

CHAPTER 4 CHARACTER, NUMBER, AND MISCELLANEOUS FUNCTIONS A function is a type of formula whose result is one of

two things: either a transformation or information. Syntax SymbolsSYMBOL USAGE[] Square brackets enclose syntax options{} Braces enclose items of which only one is required| A vertical bar denotes options… Three dots indicate that the preceding expression

can be repeatedDelimiters Delimiters must be entered exactly as shown in

the syntax. Commas, parentheses, etc.CAPS Words in all capital letters indicate the Oracle

keywords that identify the individual elements of the SQL command or the name of the function.

UNDERLINE

Default values are underlined

Page 3: Chapter 4 Character, number, and Miscellaneous functions

LAB 4.1: CHARACTER FUNCTIONSLOWER The LOWER function transforms data into lowercase.

SELECT state, LOWER(state), LOWER('STATE'), LOWER('State') FROM zipcode;

STATE LOWER(STATE) LOWER('STATE') LOWER('STATE') ----- ------------ -------------- -------------- CT ct state state FL fl state state OH oh state state MI mi state state GA ga state state NY ny state state MA ma state state NJ nj state state WV wv state state PR pr state state

10 rows selected

Page 4: Chapter 4 Character, number, and Miscellaneous functions

UPPER AND INITCAP The UPPER function transforms data into UPPERCASE. The INITCAP functions capitalizes the first letter and lowercases the

rest of the word. SELECT DISTINCT state, UPPER(state), INITCAP(state) FROM zipcode;

STATE UPPER(STATE) INITCAP(STATE) ----- ------------ -------------- NJ NJ Nj MA MA Ma CT CT Ct GA GA Ga WV WV Wv FL FL Fl PR PR Pr NY NY Ny OH OH Oh MI MI Mi

10 rows selected

Page 5: Chapter 4 Character, number, and Miscellaneous functions

THE LPAD AND RPAD FUNCTIONS Transforms data by padding strings to the

left(LPAD) or to the right(RPAD). There is a third, optional input parameter to

specify which character the string should be padded with. Strings are padded with spaces by default. Remember that the second input is the maximum TOTAL character length.

SELECT RPAD('yeah', 9, '!'), LPAD('no', 4, '?') from dual;

RPAD('YEAH',9,'!') LPAD('NO',4,'?') ------------------ ---------------- yeah!!!!! ??no

Page 6: Chapter 4 Character, number, and Miscellaneous functions

THE DUAL TABLE DUAL is a table unique to Oracle. It

contains a single row and a single column called DUMMY.

Used to call functions with string literals as input that does not exist in a table.

See example on previous slide.

Page 7: Chapter 4 Character, number, and Miscellaneous functions

THE LTRIM, RTRIM, AND TRIM FUNCTIONS LTRIM and RTRIM remove all unwanted

characters in a string. Blanks spaced are removed by default.

The second input to the function is the character to be removed.

SELECT LTRIM('000012340', '0'), RTRIM('0123400000', '0'),LTRIM(RTRIM('000012340000','0'), '0')FROM dual;

LTRIM('000012340','0') RTRIM('0123400000','0') LTRIM(RTRIM('000012340000','0'), '0')---------------------- ----------------------- ---------------------------- 12340 01234 1234

Page 8: Chapter 4 Character, number, and Miscellaneous functions

TRIM FUNCTION Instead of nesting the LTRIM and RTRIM

functions, we can use TRIM to achieve the same results. Keywords are LEADING, TRAILING, and the default BOTH.

SELECT TRIM(LEADING '0' FROM '000012340'), TRIM(TRAILING '0' FROM '0123400000'), TRIM('0' FROM '000012340000')FROM dual;

TRIM(LEADING'0'FROM'000012340') TRIM(TRAILING'0'FROM'0123400000') TRIM('0'FROM'000012340000') ------------------------------- --------------------------------- --------------------------- 12340 01234 1234

Page 9: Chapter 4 Character, number, and Miscellaneous functions

THE SUBSTR FUNCTION SUBSTR transforms a string, returning a

substring or a subset of a string, based on its input parameters.

Takes two input parameters and an optional third. SUBSTR(input, starting_postition, ending_position)

SELECT substr('I love MATH!', 1,1), substr('I love MATH!', 2,6),substr('I love MATH!', 7)FROM dual;

SUBSTR('ILOVEMATH!',1,1) SUBSTR('ILOVEMATH!',2,6) SUBSTR('ILOVEMATH!',7) ------------------------ ------------------------ ---------------------- I love MATH!

Page 10: Chapter 4 Character, number, and Miscellaneous functions

THE INSTR FUNCTION INSTR, meaning in string, looks for the

occurrence of a string inside another string, returning the starting position of the search string within the target string.

SELECT INSTR('linear', 'er'),INSTR('hyperbolic', 'er')FROM dual;

INSTR('LINEAR','ER') INSTR('HYPERBOLIC','ER') ---------------------- ------------------------ 0 4

Page 11: Chapter 4 Character, number, and Miscellaneous functions

THE LENGTH FUNCTION The LENGTH function determines the

length of a string, expressed as a number.

SELECT length('linear')FROM dual;

LENGTH('LINEAR') ---------------------- 6

Page 12: Chapter 4 Character, number, and Miscellaneous functions

FUNCTIONS IN WHERE AND ORDER BY CLAUSES Functions can be used anywhere an

expression can be used.

SELECT first_name, last_nameFROM sharma.studentWHERE instr(first_name, '.')>0ORDER BY LENGTH(last_name);

FIRST_NAME LAST_NAME ------------------------- ------------------------- Suzanne M. Abid J. Dalvi Austin V. Cadet D. Orent

Page 13: Chapter 4 Character, number, and Miscellaneous functions

NESTED FUNCTIONS As we saw in the earlier example using

LTRIM(RTRIM(in)), functions can be nested.

The are evaluated starting from the inner function and working outward.

SELECT first_name, instr(SUBSTR(first_name, 1,5), 'rr'), last_nameFROM student;

FIRST_NAME INNERSTRING LAST_NAME ------------------------- ---------------------- ------------------------- Pierre 4 Radicola Derrick 3 Baltazar Gerry 3 Tripp

Page 14: Chapter 4 Character, number, and Miscellaneous functions

CONCATENATION Concatenation connects strings together

to become one. Two different concatenation methods The CONCAT function:

Select CONCAT(‘me’, ‘ too!’) from DUAL;

‘me too!’ The || symbol.

Select ‘me’ || ‘ too!’ from DUAL;‘me too!’

Page 15: Chapter 4 Character, number, and Miscellaneous functions

THE REPLACE FUNCTION The REPLACE function replaces one

string with another string.SELECT REPLACE('My hand is asleep', 'hand', 'foot') FROM DUAL;

REPLACE('MYHANDISASLEEP','HAND','FOOT') --------------------------------------- My foot is asleep

Page 16: Chapter 4 Character, number, and Miscellaneous functions

THE TRANSLATE FUNCTION The TRANSLATE function provides a one-

for-one character substitution. SELECT TRANSLATE('My hand is asleep', 'ae', 'io') FROM DUAL;

TRANSLATE('MYHANDISASLEEP','AE','IO') ------------------------------------- My hind is isloop

Page 17: Chapter 4 Character, number, and Miscellaneous functions

THE SOUNDEX FUNCTION The SOUNDEX functions allows you to

compare differently spelled words that phonetically sound alike.

SELECT student_id, last_nameFROM sharma.studentWHERE soundex(last_name) = soundex('MARTIN');

STUDENT_ID LAST_NAME ---------------------- ------------------------- 110 Martin 324 Marten 393 Martin

Page 18: Chapter 4 Character, number, and Miscellaneous functions

SQL DEVELOPER SNIPPETS SQL functions or syntax examples that

are frequently used are stored and called snippets.

They can be accessed by going to ViewSnippets in SQL Developer

Page 19: Chapter 4 Character, number, and Miscellaneous functions

LAB 4.1: EXERCISES Go to page 147 in book Answer and discuss answers in class.

Page 20: Chapter 4 Character, number, and Miscellaneous functions

LAB 4.2: NUMBER FUNCTIONSABS AND SIGN The ABS Function

The ABS function computes the absolute value of a number, measuring its magnitude.

SELECT 'The absolute value of -25 is ' || ABS(-25)FROM DUAL;

'THEABSOLUTEVALUEOF-25IS'||ABS(-25) ----------------------------------- The absolute value of -25 is 25

The SIGN Function The SIGN function tells you the sign of a value, returning a

number 1 for positive numbers, -1 for negative numbers, and 0 for zero.SELECT -14, SIGN(-14), SIGN(14), SIGN(0) FROM DUAL;

-14 SIGN(-14) SIGN(14) SIGN(0) ---------------------- ---------------------- ---------------------- ---------------------- -14 -1 1 0

Page 21: Chapter 4 Character, number, and Miscellaneous functions

ROUND AND TRUNC FUNCTIONS ROUND rounds a value to a given number of digits

of precision. TRUNC cuts off a value to a given number of digits of precisions.

They each have two inputs, the number to be rounded/truncated and the number of places to round/truncate to. A negative value in the second input will round/truncate to n digits to the left of the decimal point.

SELECT 22.0051, ROUND(22.0051, 2), ROUND(22.0051, -2) FROM DUAL;22.0051 ROUND(22.0051,2) ROUND(22.0051,-2) ---------------------- ---------------------- ---------------------- 22.0051 22.01 0

SELECT 22.0051, TRUNC(22.0051, 2), TRUNC(22.0051, -2) FROM DUAL;

22.0051 TRUNC(22.0051,2) TRUNC(22.0051,-2) ---------------------- ---------------------- ---------------------- 22.0051 22 0

Page 22: Chapter 4 Character, number, and Miscellaneous functions

THE FLOOR AND CEIL FUNCTIONS The CEIL function returns the smallest

integer greater than or equal to a value; the FLOOR function returns the largest integer equal to or less than a value.

SELECT FLOOR(22.5), CEIL(22.5) FROM DUAL;

FLOOR(22.5) CEIL(22.5) ---------------------- ---------------------- 22 23

Page 23: Chapter 4 Character, number, and Miscellaneous functions

THE MOD FUNCTION MOD is a function that returns the

modulus, or the remainder of a value divided by another value.

It takes two inputs, the number to be divided and the value to divide it by. MOD uses FLOOR in its computations.SELECT 25/6, MOD(25,6), 28/5, MOD(28,5) FROM DUAL;

25/6 MOD(25,6) 28/5 MOD(28,5) ---------------------- ---------------------- ---------------------- ---------------------- 4.16666667 1 5.6 3

25 – 6*(FLOOR(4.16)) =25-24 =1 28-5*(FLOOR(5.6)) = 28-25=3

Page 24: Chapter 4 Character, number, and Miscellaneous functions

FLOATING-POINT NUMBERS Floating-point numbers support the IEEE standard for

binary floating-point arithmetic. Computations can sometimes be in the order of 5-10x faster than NUMBER because floating-point data types use the native instruction set supplied by the hardware vendor.

BINARY_DOUBLE supports a wider range of values than does BINARY_FLOAT but they both consist of three components: a sign, the signed exponent, and significand.

The ROUND function takes on a different behavior if the input is BINARY_FLOAT or BINARY_DOUBLE, rounding to the nearest EVEN value.

select ROUND(3.5), ROUND(3.5f), ROUND(4.5), ROUND(4.5f) from DUAL;

ROUND(3.5) ROUND(3.5F) ROUND(4.5) ROUND(4.5F) ------------------ ----------- ---------------------- ----------- 4 4.0 5 4.0

Page 25: Chapter 4 Character, number, and Miscellaneous functions

THE REMAINDER FUNCTION The REMAINDER function calculates the

REMAINDER according to the IEEE specification.

It is similar to MOD, but uses ROUND instead of FLOOR in its calculations.

SELECT 25/6, REMAINDER(25,6), 28/5, REMAINDER(28,5) FROM DUAL;

25/6 REMAINDER(25,6) 28/5 REMAINDER(28,5) ---------------------- ---------------------- ---------------------- ---------------------- 4.166666666667 1 5.6 -2

25 – 6*(ROUND(4.16)) =25-24 =1 28-5*(ROUND(5.6)) = 28-30=-2

Page 26: Chapter 4 Character, number, and Miscellaneous functions

ARITHMETIC OPERATORS The four mathematical operators

( addition, subtraction, multiplication, and division) can used in a SQL statement and can be combined.

Parentheses are used to group computations, indicating precedence of the operators.

Page 27: Chapter 4 Character, number, and Miscellaneous functions

LAB 4.2: EXERCISES Go to page 163 in book Answer and discuss answers in class.

Page 28: Chapter 4 Character, number, and Miscellaneous functions

LAB 4.3: MISCELLANEOUS SINGLE-ROW FUNCTIONSTHE NVL FUNCTION The NVL function replaces a NULL value

with a default value. Since a computation with an unknown

value yields an unknown value, the NVL function can be used to replace the unknown value with a valid value.

SELECT NVL(1,2) + NVL(NULL, 2) FROM DUAL;

NVL(1,2)+NVL(NULL,2) ---------------------- 3

Page 29: Chapter 4 Character, number, and Miscellaneous functions

THE COALESCE FUNCTION Similar to the NVL function except instead of specifying one

substitution expression for a null value, you can optionally evaluate multiple substitution columns or substitution expressions.

If the first value is not null then the first value is returned else if the second value is not null then the second value is returned else if the third value is not null then the third value is returned, etc.

SELECT student_id, midterm_grade, finalexam_grade, quiz_grade,COALESCE(midterm_grade, finalexam_grade, quiz_grade) as "Coalesce"from grade_summary;

STUDENT_ID MIDTERM_GRADE FINALEXAM_GRADE QUIZ_GRADE Coalesce -------------- ---------------------- ---------------------- --------------- -------------- 123 90 50 100 90 456 80 95 80 678 98 98 789 78 85 78

Page 30: Chapter 4 Character, number, and Miscellaneous functions

THE NVL2 FUNCTION This function checks for both not null

and null values and has three parameters.

If the first input is not null then the second parameter is returned, else the third parameter is returned.

SELECT NVL2(1,'Not Null', 'Null'), NVL2(NULL, 'Not Null', 'Null') FROM dual;

NVL2(1,'NOTNULL','NULL') NVL2(NULL,'NOTNULL','NULL') ------------------------ --------------------------- Not Null Null

Page 31: Chapter 4 Character, number, and Miscellaneous functions

THE LNNVL FUNCTION The LNNVL can ONLY be used in the

WHERE clause. It returns either true of false. It returns

true and therefore a result if the condition is either false or unknown.

SELECT course_no, cost FROM course WHERE LNNVL(cost<1500)

COURSE_NO COST ---------------------- ---------------------- 80 1595 450

Page 32: Chapter 4 Character, number, and Miscellaneous functions

THE NULLIF FUNCTION The NULLIF function is unique in that it

generates null values. The function compares two functions; if

the values are equal, the function returns a null; otherwise, the function returns the first expression.

SELECT NULLIF('1','1'), NULLIF('1','2') FROM dual;

NULLIF('1','1') NULLIF('1','2') --------------- --------------- 1

Page 33: Chapter 4 Character, number, and Miscellaneous functions

THE NANVL FUNCTION This function is used only for the

BINARY_FLOAT and BINARY_DOUBLE floating-point data types.

The function returns a substitution value in case the input is NAN(“not a number”).

SELECT NANVL(BINARY_FLOAT_NAN,1), NANVL(1,2) FROM dual;

NANVL(BINARY_FLOAT_NAN,1) NANVL(1,2) ------------------------- ---------------------- 1.0 1

Page 34: Chapter 4 Character, number, and Miscellaneous functions

THE DECODE FUNCTION The DECODE function substitutes values based on a condition, using if-

then-else logic. If the input value is equal to the second parameter then the third value

is returned else the fourth value is returned. The search and result values can be repeated.

SELECT DISTINCT state, DECODE(state, 'NY', 'New York', 'NJ', 'New Jersey', 'OTHER')FROM zipcode;

STATE DECODE(STATE,'NY','NEWYORK','NJ','NEWJERSEY','OTHER') ----- ----------------------------------------------------- MA OTHER WV OTHER OH OTHER MI OTHER NJ New Jersey FL OTHER CT OTHER GA OTHER PR OTHER NY New York

Page 35: Chapter 4 Character, number, and Miscellaneous functions

THE DECODE FUNCTION AND NULLS AND COMPARISONS A NULL value can be explicitly passed to the DECODE function.

SELECT 'NY',DECODE('NY', 'NY', 'New York', 'NJ', 'New Jersey', NULL, 'OTHER'), NULL, DECODE(NULL, 'NY', 'New York', 'NJ', 'New Jersey', NULL, 'OTHER')FROM dual;'NY' DECODE('NY',…) NULL DECODE(NULL,…) --- --------------------- ------------ ------------------NY New York OTHER

The DECODE function does not allow greater than or less than comparison; however, combining it with the SIGN function overcomes this shortcoming.

SELECT course_no, cost, DECODE(SIGN(cost-1195), -1, 500, cost) newcostFROM courseWHERE course_no IN (80, 20, 135, 450)ORDER BY 2;

COURSE_NO COST NEWCOST ----------------- ----------- ---------------135 1095 500 20 1195 1195 80 1595 1595

Page 36: Chapter 4 Character, number, and Miscellaneous functions

THE SEARCHED CASE EXPRESSION Each CASE expression starts with keyword CASE and end with the

keyword END; the ELSE clause is optional. CASE expressions can be nested within each other and used in the

where clause. You must be careful that each THEN keyword returns a value of the same data type.

SELECT course_no, cost, CASE WHEN cost<1100 THEN 1000 WHEN cost>=1100 AND cost <1500 THEN cost*1.1 WHEN cost IS NULL THEN 0 ELSE cost END "test case"FROM courseWHERE course_no IN (80, 20, 135, 450)ORDER BY 2;

COURSE_NO COST test case ---------------------- ---------------------- ---------------------- 135 1095 1000 20 1195 1314.5 80 1595 1595 450 0

Page 37: Chapter 4 Character, number, and Miscellaneous functions

THE SIMPLE CASE EXPRESSION If your conditions are testing for equality only, you can use a simple

CASE expression. The simple CASE expression has an additional input which the

WHEN statements are tested against.

SELECT course_no, cost, CASE cost WHEN 1095 THEN cost/2 WHEN 1195 THEN cost*1.1 WHEN 1595 THEN cost ELSE cost*.5 END "simple case"FROM courseWHERE course_no IN (80, 20, 135, 450)ORDER BY 2;

COURSE_NO COST simple case ---------------------- ---------------------- ---------------------- 135 1095 547.5 20 1195 1314.5 80 1595 1595 450

Page 38: Chapter 4 Character, number, and Miscellaneous functions

CHAPTER 4 COMPLETE! Quiz will be given at the beginning of

our next class