conversion functions implicit datatype conversion explicit datatype conversion datatypeconversion in...

21
Conversion Functions Implicit datatype Implicit datatype conversion conversion Explicit datatype Explicit datatype conversion conversion Datatype Datatype conversion conversion In some cases, Oracle Server allows data of one datatype where it expects data of a different datatype. This is allowed when Oracle Server can automatically convert the data to the expected datatype. This datatype conversion can be done implicitly by Oracle Server or explicitly by the user.

Upload: griffin-newton

Post on 02-Jan-2016

258 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Conversion Functions

Implicit datatypeImplicit datatypeconversionconversion

Explicit datatypeExplicit datatypeconversionconversion

DatatypeDatatypeconversionconversion

In some cases, Oracle Server allows data of one datatype where it expects data of a different datatype. This is allowed when Oracle Server can automatically convert the data to the expected datatype. This datatype conversion can be done implicitly by Oracle Server or explicitly by the user.

Page 2: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Explicit Datatype ConversionExplicit Datatype Conversion

NUMBERNUMBER CHARACTERCHARACTER

TO_CHARTO_CHAR

TO_NUMBERTO_NUMBER

DATEDATE

TO_CHARTO_CHAR

TO_DATETO_DATE

Page 3: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

TO_CHAR Function with DatesTO_CHAR Function with Dates

The format model:Must be enclosed in single quotation marks

and is case sensitiveCan include any valid date format elementHas an fm element to remove padded blanks

or suppress leading zeros Is separated from the date value by a

comma

The format model:Must be enclosed in single quotation marks

and is case sensitiveCan include any valid date format elementHas an fm element to remove padded blanks

or suppress leading zeros Is separated from the date value by a

comma

TO_CHAR(date, 'fmt')TO_CHAR(date, 'fmt')

Page 4: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype
Page 5: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype
Page 6: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype
Page 7: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Elements of Date Format ModelElements of 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.

• 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

DD "of" MONTH 12 of OCTOBER

ddspth fourteenth

Page 8: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype
Page 9: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Using TO_CHAR Function with DatesUsing TO_CHAR Function with Dates

SQL> SELECT ename, 2 TO_CHAR(hiredate, 'fmDD Month YYYY') HIREDATE 3 FROM emp;

ENAME HIREDATE---------- -----------------KING 17 November 1981BLAKE 1 May 1981CLARK 9 June 1981JONES 2 April 1981MARTIN 28 September 1981ALLEN 20 February 1981...14 rows selected.

Page 10: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

NVL FunctionNVL Function

Converts null to an actual valueDatatypes 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')

Converts null to an actual valueDatatypes 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')

Page 11: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Syntax:

NVL (expr1, expr2)

where: expr1 is the source value or expression that may contain null

expr2 is the target value for converting null

You can use the NVL function to convert any datatype, but the return value is always the same as the datatype of expr1.

NVL Conversions for Various Datatypes

Datatype Conversion Example

NUMBER NVL (number_column.9)

DATE NVL (date_column, ’01-JAN-95’)

CHAR or VARCHAR2 NVL(character_column, ‘Unavailable’)

Page 12: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

SQL> SELECT ename, sal, comm, (sal*12)+NVL(comm,0) 2 FROM emp;

Using the NVL FunctionUsing the NVL Function

ENAME SAL COMM (SAL*12)+NVL(COMM,0)---------- --------- --------- --------------------KING 5000 60000BLAKE 2850 34200CLARK 2450 29400JONES 2975 35700MARTIN 1250 1400 16400ALLEN 1600 300 19500...14 rows selected.

Page 13: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

DECODE FunctionDECODE Function

Facilitates conditional inquiries by doing the work of a CASE or IF-THEN-ELSE statement

Facilitates conditional inquiries by doing the work of a CASE or IF-THEN-ELSE statement

DECODE(col/expression, search1, result1 [, search2, result2,...,] [, default])

DECODE(col/expression, search1, result1 [, search2, result2,...,] [, default])

Page 14: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Using the DECODE FunctionUsing the DECODE Function

SQL> SELECT job, sal, 2 DECODE(job, 'ANALYST', SAL*1.1, 3 'CLERK', SAL*1.15, 4 'MANAGER', SAL*1.20, 5 SAL) 6 REVISED_SALARY 7 FROM emp;

JOB SAL REVISED_SALARY--------- --------- --------------PRESIDENT 5000 5000MANAGER 2850 3420MANAGER 2450 2940...14 rows selected.

Page 15: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Using the DECODE Function

In the SQL statement above, the value of JOB is decoded. If JOB is ANALYST, the salary increase is 10%; if JOB is CLERK, the salary increase is 15%; if JOB is MANAGER, the salary increase is 20%. For all other job roles, there is no increase in salary.

The same statement can be written as an IF-THEN-ELSE statement:IF job = 'ANALYST' THEN sal = sal*1.1

IF job = 'CLERK' THEN sal = sal*1.15

IF job = 'MANAGER' THEN sal = sal*1.20

ELSE sal = sal

Page 16: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Using the DECODE FunctionUsing the DECODE Function

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;

Display the applicable tax rate for each employee in department 30.Display the applicable tax rate for each employee in department 30.

Page 17: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Nesting FunctionsNesting Functions

Single-row functions can be nested to any level.

Nested functions are evaluated from deepest level to the least-deep level.

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

Page 18: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype
Page 19: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype
Page 20: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype
Page 21: Conversion Functions Implicit datatype conversion Explicit datatype conversion Datatypeconversion In some cases, Oracle Server allows data of one datatype

Nesting FunctionsNesting 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