SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
Oracle OCP 考试系列培训
                 之
          1Z0-007 Lesson3
                          www.OracleOnLinux.cn




3-1   Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                              OracleOnLinux
                              OracleOnLinux.cn
3
         Using Single-Row Functions to
               Customize Output




3-2   Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                              OracleOnLinux
                              OracleOnLinux.cn
Objectives


      After completing this lesson, you should be able to do
      the following:
       • Describe various types of functions that are
           available in SQL
       • Use character, number, and date functions in
           SELECT statements
       • Describe the use of conversion functions




3-3        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn
SQL Functions


       Input                                                Output

                                     Function


      arg 1                      Function performs
                                       action
          arg 2
                                                            Result
                                                            value


                  arg n




3-4     Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                OracleOnLinux
                                OracleOnLinux.cn
Two Types of SQL Functions




                                     Functions




         Single-row                                    Multiple-row
          functions                                     functions

      Return one result                             Return one result
           per row                                   per set of rows




3-5     Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                OracleOnLinux
                                OracleOnLinux.cn
Single-Row Functions


      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(隐式转换数据类型)
                              type(
       • Can be nested(可以嵌套,多层嵌套)
                  nested(
       • Accept arguments that can be a column or an
          expression
      function_name [(arg1, arg2,...)]



3-6        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn
Single-Row Functions


                                   Character




                                  Single-row
      General                                             Number
                                   functions




                 Conversion                      Date




3-7   Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                              OracleOnLinux
                              OracleOnLinux.cn
Character Functions


                                    Character
                                    functions




      Case-manipulation                         Character-manipulation
          functions                                   functions

             LOWER                                   CONCAT
             UPPER                                   SUBSTR
             INITCAP                                 LENGTH
                                                     INSTR
                                                     LPAD | RPAD
                                                     TRIM
                                                     REPLACE

3-8    Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                               OracleOnLinux
                               OracleOnLinux.cn
Case-Manipulation Functions


      These functions convert case for character strings:
       Function                              Result
       LOWER('SQL Course')
       LOWER('    Course'                    sql course
       UPPER('SQL Course')
       UPPER('    Course'                    SQL COURSE
       INITCAP('SQL Course')
       INITCAP('    Course'                  Sql Course




3-9        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn
Using 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';




3-10        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Character-Manipulation Functions


       These functions manipulate character strings:
       Function                                       Result
       CONCAT('Hello', 'World')                       HelloWorld
       SUBSTR('HelloWorld',1,5)
       SUBSTR('HelloWorld'                            Hello
       LENGTH('HelloWorld')                           10
       INSTR('HelloWorld', 'W')                       6
       LPAD(salary,10,'*')
       LPAD(salary,10,'                               *****24000
       RPAD(salary, 10, '*')
                        '*                            24000*****
                                                      24000*
       REPLACE                                        BLACK and BLUE
       ('JACK and JUE','J','BL')
       TRIM('H' FROM 'HelloWorld')                    elloWorld



3-11        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the 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

3-12        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Number Functions


       •   ROUND: Rounds value to specified decimal
       •   TRUNC: Truncates value to specified decimal
       •   MOD: Returns remainder of division
       Function                                     Result
       ROUND(45.926, 2)                             45.93
       TRUNC(45.926, 2)                             45.92
       MOD(1600, 300)                               100




3-13        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the 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.



3-14        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the TRUNC Function


                         1                         2
       SELECT TRUNC(45.923,2), TRUNC(45.923),
              TRUNC(45.923,-1)                                         3
       FROM   DUAL;




                                1                      2                   3




3-15        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the 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';




3-16         Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
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.
            – Enables you to store 21st-century dates in the
               20th century by specifying only the last two digits
               of the year
            – Enables you to store 20th-century dates in the
               21st century in the same way
       SELECT last_name, hire_date
       FROM   employees
       WHERE hire_date < '01-FEB-88';




3-17        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Working with Dates


       SYSDATE is a function that returns:
       •   Date
       •   Time




3-18        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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.




3-19        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using Arithmetic Operators
                           with Dates

       SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
       FROM   employees
       WHERE department_id = 90;




3-20        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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




3-21           Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                       OracleOnLinux
                                       OracleOnLinux.cn
Using Date Functions


       Function                                                Result
       MONTHS_BETWEEN                                          19.6774194
                  ('01-SEP-95','11-JAN-94')
       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'




3-22        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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




3-23        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3: Overview of Part 1


       This practice covers the following topics:
        • Writing a query that displays the current date
        • Creating queries that require the use of numeric,
           character, and date functions
        • Performing calculations of years and months of
           service for an employee




3-24        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Conversion Functions


                                    Data type
                                   conversion




           Implicit data type                   Explicit data type
             conversion                           conversion




3-25   Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                               OracleOnLinux
                               OracleOnLinux.cn
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




3-26          Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                      OracleOnLinux
                                      OracleOnLinux.cn
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


       SELECT   last_name, salary
       FROM     employees
       WHERE    salary>'10000'




3-27        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Explicit Data Type Conversion


                   TO_NUMBER                     TO_DATE




       NUMBER                     CHARACTER                    DATE




                     TO_CHAR                     TO_CHAR



3-28    Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                OracleOnLinux
                                OracleOnLinux.cn
Explicit Data Type Conversion


                   TO_NUMBER                     TO_DATE




       NUMBER                     CHARACTER                    DATE




                     TO_CHAR                     TO_CHAR



3-29    Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                OracleOnLinux
                                OracleOnLinux.cn
Using the 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




3-30        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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




3-31           Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                       OracleOnLinux
                                       OracleOnLinux.cn
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




3-32        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the TO_CHAR Function with Dates


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




       …




3-33        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the 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



3-34        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the TO_CHAR Function with Numbers


       SELECT   TO_CHAR(salary, '$99,999.00') SALARY
       FROM     employees
       WHERE    last_name = 'Ernst';




3-35        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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 an fx modifier. This
           modifier specifies the exact matching for the
           character argument and date format model of a
           TO_DATE function.

3-36        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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 an fx modifier. This
           modifier specifies the exact matching for the
           character argument and date format model of a
           TO_DATE function

3-37        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
RR Date Format


       Current Year              Specified Date       RR Format      YY Format
       1995                      27-OCT-95            1995           1995
       1995                      27-OCT-17            2017           1917
       2001                      27-OCT-17            2017           2017
       2001                      27-OCT-95            1995           2095

                                     If the specified two-digit year is:

                                            0–49                   50–99
                                                                   50–
       If two digits                 The return date is in   The return date is in
       of the             0–49       the current century     the century before
       current                                               the current one
       year are:               The return date is in         The return date is in
                         50–99 the century after
                         50–                                 the current century
                               the current one

3-38         Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
Example of RR Date Format


       To find employees hired prior to 1990, use the RR date
       format, which produces the same results whether the
       command is run in 1999 or now:
       SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
       FROM employees
       WHERE hire_date < TO_DATE('01-Jan-90','DD-Mon-RR');




3-39        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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)
           F3(F2 F1(col,arg1),arg2),arg3)
              F2(

                            Step 1 = Result 1
                            Step 2 = Result 2
                            Step 3 = Result 3




3-40        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Nesting Functions


       SELECT last_name,
         UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US'))
       FROM   employees
       WHERE department_id = 60;




       SELECT last_name,
              NVL(TO_CHAR(manager_id), 'No Manager')
              NVL(TO_CHAR
                  TO_CHAR(manager_id),
       FROM   employees
       WHERE manager_id IS NULL;




3-41        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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)
        • COALESCE (expr1, expr2, ..., exprn)




3-42        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
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:
                            match:
            – NVL(commission_pct,0)
            – NVL(hire_date,'01-JAN-97')
            – NVL(job_id,'No Job Yet')
       SELECT last_name,
              NVL(TO_CHAR(manager_id), 'No Manager')
              NVL(TO_CHAR
                  TO_CHAR(manager_id),
       FROM   employees
       WHERE manager_id IS NULL;




3-43        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the NVL Function


       SELECT last_name, salary, NVL(commission_pct, 0),     1
          (salary *12) + (salary *12*NVL(commission_pct, 0)) AN_SAL
          (salary*                12*
       FROM employees;
                                                                                2




       …

                                                                 1          2

3-44         Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
Using the 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

3-45        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the NULLIF Function

                                                           1
       SELECT first_name, LENGTH(first_name) "expr1",
              last_name, LENGTH(last_name) "expr2",          2
       FROM
              NULLIF(LENGTH(first_name), LENGTH(last_name)) result
              employees;
                                                                               3




       …
                                      1                        2           3

3-46        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the COALESCE Function


       •   The advantage of the COALESCE function over the
           NVL function is that the COALESCE function can
           take multiple alternate values.
       •   If the first expression is not null, the COALESCE
           function returns that expression; otherwise, it
           does a COALESCE of the remaining expressions.




3-47        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the COALESCE Function


       SELECT last_name,
              COALESCE(manager_id,commission_pct, -1) comm
       FROM   employees
       ORDER BY commission_pct;




       …



3-48        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Conditional Expressions


       •   Provide the use of IF-THEN-ELSE logic within a
           SQL statement
       •   Use two methods:
           – CASE expression
           – DECODE function




3-49        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
CASE Expression


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

       CASE expr WHEN            comparison_expr1     THEN   return_expr1
                [WHEN            comparison_expr2     THEN   return_expr2
                 WHEN            comparison_exprn     THEN   return_exprn
                 ELSE            else_expr]
       END




3-50         Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
Using the CASE Expression


       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;

       …

       …


3-51         Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
Using the CASE Expression


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

       SELECT last_name, job_id, salary,hire_date,
          CASE    WHEN months_between(sysdate,hire_date)/12>=20
                  THEN 2.00*salary
                        2.00*
                  WHEN job_id in ('ST_CLERK','SA_REP')
                                 ('ST_CLERK' 'SA_REP')
                                  'ST_CLERK',
                  THEN 1.15*salary
                        1.15*
                  WHEN salary<=5000
                  THEN 1.20*salary
                        1.20*
          ELSE    salary END   "REVISED_SALARY"
       FROM    employees;




3-52         Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
DECODE Function


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

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




3-53         Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
Using the DECODE Function


       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;


       …

       …



3-54        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Using the DECODE Function


       Display the applicable tax rate for each employee in
       department 80:
       SELECT 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_RATE
       FROM   employees
       WHERE department_id = 80;



3-55        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Summary


       In this lesson, you should have learned how to:
        • Perform calculations on data using functions
        • Modify individual data items using functions
        • Manipulate output for groups of rows using
            functions
        • Alter date formats for display using functions
        • Convert column data types using functions
        • Use NVL functions
        • Use IF-THEN-ELSE logic




3-56        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3: Overview of Part 2


       This practice covers the following topics:
        • Creating queries that require the use of numeric,
           character, and date functions
        • Using concatenation with functions
        • Writing case-insensitive queries to test the
           usefulness of character functions
        • Performing calculations of years and months of
           service for an employee
        • Determining the review date for an employee




3-57        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3


       Q1: Which two are character manipulation functions?
       (Choose two.)

       A.   TRIM
       B.   REPLACE
       C.   TRUNC
       D.   TO_DATE
       E.   MOD
       F.   CASE




3-58         Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                     OracleOnLinux
                                     OracleOnLinux.cn
Practice 3


       Q2:The CUSTOMERS table has these columns:
       Q2:The

       CUSTOMER_ID     NUMBER(4)      NOT NULL
       CUSTOMER_NAME    VARCHAR2(100) NOT NULL
       STREET_ADDRESS   VARCHAR2(150)
       CITY_ADDRESS     VARCHAR2(50)
       STATE_ADDRESS    VARCHAR2(50)
       PROVINCE_ADDRESS VARCHAR2(50)
       COUNTRY_ADDRESS VARCHAR2(50)
       POSTAL_CODE      VARCHAR2(12)
       CUSTOMER_PHONE VARCHAR2(20)




3-59        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3


       Q2:
       A promotional sale is being advertised to the
       customers in France. Which WHERE clause
       identifies customers that are located in France?

       A. WHERE lower(country_address) = "france"
       B. WHERE lower(country_address) = 'france'
       C. WHERE lower(country_address) IS 'france'
       D. WHERE lower(country_address) = '%france%'
       E. WHERE lower(country_address) LIKE
       %france%



3-60        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3

       Q3: Which SELECT statement will get the result
       'elloworld' from the string 'HelloWorld'?

       A. SELECT SUBSTR( 'HelloWorld',1) FROM dual;
       B. SELECT INITCAP(TRIM ('HelloWorld', 1,1))
       FROM dual;
       C. SELECT LOWER(SUBSTR('HelloWorld', 1, 1)
       FROM dual;
       D. SELECT LOWER(SUBSTR('HelloWorld', 2, 1)
       FROM dual;
       E. SELECT LOWER(TRIM ('H' FROM
       'HelloWorld')) FROM dual;


3-61        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3

       Q4:Evaluate the SQL statement:
       Q4:Evaluate
       SELECT LPAD(salary,10,*) FROM EMP
               LPAD(salary,10,*
       WHERE EMP_ID = 1001;

       If the employee with the EMP_ID 1001 has a salary
       of 17000, what is displayed?
       A.   17000.00
       B.   17000*****
            17000*
       C.   ****170.00
       D.   **17000.00
       E.   an error statement



3-62          Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                      OracleOnLinux
                                      OracleOnLinux.cn
Practice 3

       Q5:Evaluate the SQL statement:
       Q5:Evaluate
       SELECT ROUND(TRUNC(MOD(1600,10),-1),2)
       FROM dual;

       What will be displayed?

       A.   0
       B.   1
       C.   0.00
       D.   an error statement




3-63          Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                      OracleOnLinux
                                      OracleOnLinux.cn
Practice 3

       Q6:Which SELECT statement should you use to
       Q6:Which
       extract the year from the system date and display it in
       the format "1998"?

       A. SELECT TO_CHAR(SYSDATE,'yyyy') FROM dual;
       B. SELECT TO_DATE(SYSDATE,'yyyy') FROM dual;
       C. SELECT DECODE(SUBSTR(SYSDATE, 8), 'YYYY')
       FROM dual;
       D. SELECT DECODE(SUBSTR(SYSDATE, 8), 'year')
       FROM dual;
       E. SELECT TO_CHAR(SUBSTR(SYSDATE,
       8,2),'yyyy')
       FROM dual;

3-64        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3

       Q7:Which three SELECT statements display 2000 in
       Q7:Which
       the format "$2,000.00"?


       A. SELECT TO_CHAR(2000, '$#,###.##') FROM dual;
       B. SELECT TO_CHAR(2000, '$0,000.00') FROM dual;
       C. SELECT TO_CHAR(2000, '$9,999.00') FROM dual;
       D. SELECT TO_CHAR(2000, '$9,999.99') FROM dual;
       E. SELECT TO_CHAR(2000, '$2,000.00') FROM dual;
       F. SELECT TO_CHAR(2000, '$N,NNN.NN') FROM
       dual;




3-65        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3

       Q8:Which SQL statement displays the date March 19,
       Q8:Which
       2001 in a format that appears as "Nineteenth of March
       2001 12:00:00 AM"?

       A. SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD-
       Mon-YYYY'), 'fmDdspth "of" Month YYYY fmHH:MI:SS
       AM') NEW_DATE FROM dual;

       B. SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD-
       Mon-YYYY'), 'Ddspth "of" Month YYYY fmHH:MI:SS
       AM') NEW_DATE FROM dual;




3-66        Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                    OracleOnLinux
                                    OracleOnLinux.cn
Practice 3

       C. SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD-
       Mon-YYYY'), 'fmDdspth "of" Month YYYY HH:MI:SS
       AM') NEW_DATE FROM dual;

       D. SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD-
       Mon-YYYY'), 'fmtDdspth "of" Month YYYY
       fmtHH:MI:SS AM') NEW_DATE FROM dual;
       fmtHH:MI:SS




3-67       Copyright © 2011,   www.OracleOnLinux . All rights reserved.
                                   OracleOnLinux
                                   OracleOnLinux.cn

Weitere ähnliche Inhalte

Was ist angesagt?

Subconsultas
SubconsultasSubconsultas
SubconsultasMaria
 
An Introduction to Scala - Blending OO and Functional Paradigms
An Introduction to Scala - Blending OO and Functional ParadigmsAn Introduction to Scala - Blending OO and Functional Paradigms
An Introduction to Scala - Blending OO and Functional ParadigmsMiles Sabin
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffJAX London
 
Linq To The Enterprise
Linq To The EnterpriseLinq To The Enterprise
Linq To The EnterpriseDaniel Egan
 
Functional Programming With Lambdas and Streams in JDK8
 Functional Programming With Lambdas and Streams in JDK8 Functional Programming With Lambdas and Streams in JDK8
Functional Programming With Lambdas and Streams in JDK8IndicThreads
 
Using Stratego/XT for generation of software connectors.
Using Stratego/XT for generation of software connectors.Using Stratego/XT for generation of software connectors.
Using Stratego/XT for generation of software connectors.Michal Malohlava
 
Introduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and StreamsIntroduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and StreamsEmiel Paasschens
 
ORM Concepts and JPA 2.0 Specifications
ORM Concepts and JPA 2.0 SpecificationsORM Concepts and JPA 2.0 Specifications
ORM Concepts and JPA 2.0 SpecificationsAhmed Ramzy
 
Miles Sabin Introduction To Scala For Java Developers
Miles Sabin Introduction To Scala For Java DevelopersMiles Sabin Introduction To Scala For Java Developers
Miles Sabin Introduction To Scala For Java DevelopersSkills Matter
 
Itinerary Website (Web Development Document)
Itinerary Website (Web Development Document)Itinerary Website (Web Development Document)
Itinerary Website (Web Development Document)Traitet Thepbandansuk
 
Xml Syntax Quick Reference
Xml Syntax Quick ReferenceXml Syntax Quick Reference
Xml Syntax Quick ReferenceLiquidHub
 
Xm Lquickref
Xm LquickrefXm Lquickref
Xm LquickrefLiquidHub
 
An Introduction to Scala for Java Developers
An Introduction to Scala for Java DevelopersAn Introduction to Scala for Java Developers
An Introduction to Scala for Java DevelopersMiles Sabin
 
Automatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesAutomatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesRaffi Khatchadourian
 
Introduction to Java 8
Introduction to Java 8Introduction to Java 8
Introduction to Java 8Knoldus Inc.
 

Was ist angesagt? (20)

Naver_alternative_to_jpa
Naver_alternative_to_jpaNaver_alternative_to_jpa
Naver_alternative_to_jpa
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
An Introduction to Scala - Blending OO and Functional Paradigms
An Introduction to Scala - Blending OO and Functional ParadigmsAn Introduction to Scala - Blending OO and Functional Paradigms
An Introduction to Scala - Blending OO and Functional Paradigms
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard Wolff
 
Linq To The Enterprise
Linq To The EnterpriseLinq To The Enterprise
Linq To The Enterprise
 
Java 8 Features
Java 8 FeaturesJava 8 Features
Java 8 Features
 
Functional Programming With Lambdas and Streams in JDK8
 Functional Programming With Lambdas and Streams in JDK8 Functional Programming With Lambdas and Streams in JDK8
Functional Programming With Lambdas and Streams in JDK8
 
Using Stratego/XT for generation of software connectors.
Using Stratego/XT for generation of software connectors.Using Stratego/XT for generation of software connectors.
Using Stratego/XT for generation of software connectors.
 
Introduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and StreamsIntroduction of Java 8 with emphasis on Lambda Expressions and Streams
Introduction of Java 8 with emphasis on Lambda Expressions and Streams
 
ORM Concepts and JPA 2.0 Specifications
ORM Concepts and JPA 2.0 SpecificationsORM Concepts and JPA 2.0 Specifications
ORM Concepts and JPA 2.0 Specifications
 
Miles Sabin Introduction To Scala For Java Developers
Miles Sabin Introduction To Scala For Java DevelopersMiles Sabin Introduction To Scala For Java Developers
Miles Sabin Introduction To Scala For Java Developers
 
Itinerary Website (Web Development Document)
Itinerary Website (Web Development Document)Itinerary Website (Web Development Document)
Itinerary Website (Web Development Document)
 
Xml Syntax Quick Reference
Xml Syntax Quick ReferenceXml Syntax Quick Reference
Xml Syntax Quick Reference
 
Xm Lquickref
Xm LquickrefXm Lquickref
Xm Lquickref
 
An Introduction to Scala for Java Developers
An Introduction to Scala for Java DevelopersAn Introduction to Scala for Java Developers
An Introduction to Scala for Java Developers
 
Automatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesAutomatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to Interfaces
 
Scala in a nutshell by venkat
Scala in a nutshell by venkatScala in a nutshell by venkat
Scala in a nutshell by venkat
 
camel-scala.pdf
camel-scala.pdfcamel-scala.pdf
camel-scala.pdf
 
Java Beans
Java BeansJava Beans
Java Beans
 
Introduction to Java 8
Introduction to Java 8Introduction to Java 8
Introduction to Java 8
 

Andere mochten auch

Lesson09
Lesson09Lesson09
Lesson09renguzi
 
Lesson07
Lesson07Lesson07
Lesson07renguzi
 
Lesson04 学会使用分组函数
Lesson04 学会使用分组函数Lesson04 学会使用分组函数
Lesson04 学会使用分组函数renguzi
 
Lesson08
Lesson08Lesson08
Lesson08renguzi
 
Lesson10
Lesson10Lesson10
Lesson10renguzi
 
Lesson05 从多表中查询数据
Lesson05 从多表中查询数据Lesson05 从多表中查询数据
Lesson05 从多表中查询数据renguzi
 
Lesson06 使用子查询
Lesson06 使用子查询Lesson06 使用子查询
Lesson06 使用子查询renguzi
 

Andere mochten auch (7)

Lesson09
Lesson09Lesson09
Lesson09
 
Lesson07
Lesson07Lesson07
Lesson07
 
Lesson04 学会使用分组函数
Lesson04 学会使用分组函数Lesson04 学会使用分组函数
Lesson04 学会使用分组函数
 
Lesson08
Lesson08Lesson08
Lesson08
 
Lesson10
Lesson10Lesson10
Lesson10
 
Lesson05 从多表中查询数据
Lesson05 从多表中查询数据Lesson05 从多表中查询数据
Lesson05 从多表中查询数据
 
Lesson06 使用子查询
Lesson06 使用子查询Lesson06 使用子查询
Lesson06 使用子查询
 

Ähnlich wie Lesson03 学会使用单行函数

Lesson01 学会使用基本的SQL语句
Lesson01 学会使用基本的SQL语句Lesson01 学会使用基本的SQL语句
Lesson01 学会使用基本的SQL语句renguzi
 
SQL Function.ppt
SQL Function.pptSQL Function.ppt
SQL Function.pptHappyFace22
 
Ruby on Rails Oracle adaptera izstrāde
Ruby on Rails Oracle adaptera izstrādeRuby on Rails Oracle adaptera izstrāde
Ruby on Rails Oracle adaptera izstrādeRaimonds Simanovskis
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment WorkshopChuong Nguyen
 
Using Ruby on Rails with legacy Oracle databases
Using Ruby on Rails with legacy Oracle databasesUsing Ruby on Rails with legacy Oracle databases
Using Ruby on Rails with legacy Oracle databasesRaimonds Simanovskis
 
Extending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on RailsExtending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on RailsRaimonds Simanovskis
 
Fast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesFast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesEdward Willink
 
Create custom looping procedures in sql server 2005 tech republic
Create custom looping procedures in sql server 2005   tech republicCreate custom looping procedures in sql server 2005   tech republic
Create custom looping procedures in sql server 2005 tech republicKaing Menglieng
 
Oracle Database 11 Number Functions.potx
Oracle Database 11 Number Functions.potxOracle Database 11 Number Functions.potx
Oracle Database 11 Number Functions.potxMarion Paloay
 
At Scale With Style (Erlang User Conference 2012)
At Scale With Style (Erlang User Conference 2012)At Scale With Style (Erlang User Conference 2012)
At Scale With Style (Erlang User Conference 2012)Wooga
 
Lesson02 学会使用WHERE、ORDER BY子句
Lesson02 学会使用WHERE、ORDER BY子句Lesson02 学会使用WHERE、ORDER BY子句
Lesson02 学会使用WHERE、ORDER BY子句renguzi
 
NyaruDBにゃるものを使ってみた話 (+Realm比較)
NyaruDBにゃるものを使ってみた話 (+Realm比較)NyaruDBにゃるものを使ってみた話 (+Realm比較)
NyaruDBにゃるものを使ってみた話 (+Realm比較)Masaki Oshikawa
 
Web aplikāciju izstrāde ar Ruby on Rails un Oracle DB
Web aplikāciju izstrāde ar Ruby on Rails un Oracle DBWeb aplikāciju izstrāde ar Ruby on Rails un Oracle DB
Web aplikāciju izstrāde ar Ruby on Rails un Oracle DBRaimonds Simanovskis
 

Ähnlich wie Lesson03 学会使用单行函数 (20)

Lesson01 学会使用基本的SQL语句
Lesson01 学会使用基本的SQL语句Lesson01 学会使用基本的SQL语句
Lesson01 学会使用基本的SQL语句
 
Sql functions
Sql functionsSql functions
Sql functions
 
Les01
Les01Les01
Les01
 
SQL Function.ppt
SQL Function.pptSQL Function.ppt
SQL Function.ppt
 
Oracle sql demo
Oracle sql demoOracle sql demo
Oracle sql demo
 
Ruby on Rails Oracle adaptera izstrāde
Ruby on Rails Oracle adaptera izstrādeRuby on Rails Oracle adaptera izstrāde
Ruby on Rails Oracle adaptera izstrāde
 
plsql les02
 plsql les02 plsql les02
plsql les02
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop
 
Oracle adapters for Ruby ORMs
Oracle adapters for Ruby ORMsOracle adapters for Ruby ORMs
Oracle adapters for Ruby ORMs
 
Using Ruby on Rails with legacy Oracle databases
Using Ruby on Rails with legacy Oracle databasesUsing Ruby on Rails with legacy Oracle databases
Using Ruby on Rails with legacy Oracle databases
 
Extending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on RailsExtending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on Rails
 
Fast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesFast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast Queries
 
Create custom looping procedures in sql server 2005 tech republic
Create custom looping procedures in sql server 2005   tech republicCreate custom looping procedures in sql server 2005   tech republic
Create custom looping procedures in sql server 2005 tech republic
 
plsql les01
 plsql les01 plsql les01
plsql les01
 
Oracle Database 11 Number Functions.potx
Oracle Database 11 Number Functions.potxOracle Database 11 Number Functions.potx
Oracle Database 11 Number Functions.potx
 
At Scale With Style (Erlang User Conference 2012)
At Scale With Style (Erlang User Conference 2012)At Scale With Style (Erlang User Conference 2012)
At Scale With Style (Erlang User Conference 2012)
 
At Scale With Style
At Scale With StyleAt Scale With Style
At Scale With Style
 
Lesson02 学会使用WHERE、ORDER BY子句
Lesson02 学会使用WHERE、ORDER BY子句Lesson02 学会使用WHERE、ORDER BY子句
Lesson02 学会使用WHERE、ORDER BY子句
 
NyaruDBにゃるものを使ってみた話 (+Realm比較)
NyaruDBにゃるものを使ってみた話 (+Realm比較)NyaruDBにゃるものを使ってみた話 (+Realm比較)
NyaruDBにゃるものを使ってみた話 (+Realm比較)
 
Web aplikāciju izstrāde ar Ruby on Rails un Oracle DB
Web aplikāciju izstrāde ar Ruby on Rails un Oracle DBWeb aplikāciju izstrāde ar Ruby on Rails un Oracle DB
Web aplikāciju izstrāde ar Ruby on Rails un Oracle DB
 

Kürzlich hochgeladen

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 

Lesson03 学会使用单行函数

  • 1. Oracle OCP 考试系列培训 之 1Z0-007 Lesson3 www.OracleOnLinux.cn 3-1 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 2. 3 Using Single-Row Functions to Customize Output 3-2 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 3. Objectives After completing this lesson, you should be able to do the following: • Describe various types of functions that are available in SQL • Use character, number, and date functions in SELECT statements • Describe the use of conversion functions 3-3 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 4. SQL Functions Input Output Function arg 1 Function performs action arg 2 Result value arg n 3-4 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 5. Two Types of SQL Functions Functions Single-row Multiple-row functions functions Return one result Return one result per row per set of rows 3-5 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 6. Single-Row Functions 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(隐式转换数据类型) type( • Can be nested(可以嵌套,多层嵌套) nested( • Accept arguments that can be a column or an expression function_name [(arg1, arg2,...)] 3-6 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 7. Single-Row Functions Character Single-row General Number functions Conversion Date 3-7 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 8. Character Functions Character functions Case-manipulation Character-manipulation functions functions LOWER CONCAT UPPER SUBSTR INITCAP LENGTH INSTR LPAD | RPAD TRIM REPLACE 3-8 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 9. Case-Manipulation Functions These functions convert case for character strings: Function Result LOWER('SQL Course') LOWER(' Course' sql course UPPER('SQL Course') UPPER(' Course' SQL COURSE INITCAP('SQL Course') INITCAP(' Course' Sql Course 3-9 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 10. Using 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'; 3-10 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 11. Character-Manipulation Functions These functions manipulate character strings: Function Result CONCAT('Hello', 'World') HelloWorld SUBSTR('HelloWorld',1,5) SUBSTR('HelloWorld' Hello LENGTH('HelloWorld') 10 INSTR('HelloWorld', 'W') 6 LPAD(salary,10,'*') LPAD(salary,10,' *****24000 RPAD(salary, 10, '*') '* 24000***** 24000* REPLACE BLACK and BLUE ('JACK and JUE','J','BL') TRIM('H' FROM 'HelloWorld') elloWorld 3-11 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 12. Using the 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 3-12 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 13. Number Functions • ROUND: Rounds value to specified decimal • TRUNC: Truncates value to specified decimal • MOD: Returns remainder of division Function Result ROUND(45.926, 2) 45.93 TRUNC(45.926, 2) 45.92 MOD(1600, 300) 100 3-13 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 14. Using the 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. 3-14 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 15. Using the TRUNC Function 1 2 SELECT TRUNC(45.923,2), TRUNC(45.923), TRUNC(45.923,-1) 3 FROM DUAL; 1 2 3 3-15 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 16. Using the 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'; 3-16 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 17. 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. – Enables you to store 21st-century dates in the 20th century by specifying only the last two digits of the year – Enables you to store 20th-century dates in the 21st century in the same way SELECT last_name, hire_date FROM employees WHERE hire_date < '01-FEB-88'; 3-17 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 18. Working with Dates SYSDATE is a function that returns: • Date • Time 3-18 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 19. 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. 3-19 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 20. Using Arithmetic Operators with Dates SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS FROM employees WHERE department_id = 90; 3-20 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 21. 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 3-21 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 22. Using Date Functions Function Result MONTHS_BETWEEN 19.6774194 ('01-SEP-95','11-JAN-94') 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' 3-22 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 23. 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 3-23 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 24. Practice 3: Overview of Part 1 This practice covers the following topics: • Writing a query that displays the current date • Creating queries that require the use of numeric, character, and date functions • Performing calculations of years and months of service for an employee 3-24 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 25. Conversion Functions Data type conversion Implicit data type Explicit data type conversion conversion 3-25 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 26. 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 3-26 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 27. 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 SELECT last_name, salary FROM employees WHERE salary>'10000' 3-27 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 28. Explicit Data Type Conversion TO_NUMBER TO_DATE NUMBER CHARACTER DATE TO_CHAR TO_CHAR 3-28 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 29. Explicit Data Type Conversion TO_NUMBER TO_DATE NUMBER CHARACTER DATE TO_CHAR TO_CHAR 3-29 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 30. Using the 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 3-30 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 31. 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 3-31 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 32. 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 3-32 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 33. Using the TO_CHAR Function with Dates SELECT last_name, TO_CHAR(hire_date, 'fmDD Month YYYY') AS HIREDATE FROM employees; … 3-33 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 34. Using the 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 3-34 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 35. Using the TO_CHAR Function with Numbers SELECT TO_CHAR(salary, '$99,999.00') SALARY FROM employees WHERE last_name = 'Ernst'; 3-35 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 36. 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 an fx modifier. This modifier specifies the exact matching for the character argument and date format model of a TO_DATE function. 3-36 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 37. 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 an fx modifier. This modifier specifies the exact matching for the character argument and date format model of a TO_DATE function 3-37 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 38. RR Date Format Current Year Specified Date RR Format YY Format 1995 27-OCT-95 1995 1995 1995 27-OCT-17 2017 1917 2001 27-OCT-17 2017 2017 2001 27-OCT-95 1995 2095 If the specified two-digit year is: 0–49 50–99 50– If two digits The return date is in The return date is in of the 0–49 the current century the century before current the current one year are: The return date is in The return date is in 50–99 the century after 50– the current century the current one 3-38 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 39. Example of RR Date Format To find employees hired prior to 1990, use the RR date format, which produces the same results whether the command is run in 1999 or now: SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY') FROM employees WHERE hire_date < TO_DATE('01-Jan-90','DD-Mon-RR'); 3-39 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 40. 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) F3(F2 F1(col,arg1),arg2),arg3) F2( Step 1 = Result 1 Step 2 = Result 2 Step 3 = Result 3 3-40 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 41. Nesting Functions SELECT last_name, UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US')) FROM employees WHERE department_id = 60; SELECT last_name, NVL(TO_CHAR(manager_id), 'No Manager') NVL(TO_CHAR TO_CHAR(manager_id), FROM employees WHERE manager_id IS NULL; 3-41 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 42. 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) • COALESCE (expr1, expr2, ..., exprn) 3-42 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 43. 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: match: – NVL(commission_pct,0) – NVL(hire_date,'01-JAN-97') – NVL(job_id,'No Job Yet') SELECT last_name, NVL(TO_CHAR(manager_id), 'No Manager') NVL(TO_CHAR TO_CHAR(manager_id), FROM employees WHERE manager_id IS NULL; 3-43 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 44. Using the NVL Function SELECT last_name, salary, NVL(commission_pct, 0), 1 (salary *12) + (salary *12*NVL(commission_pct, 0)) AN_SAL (salary* 12* FROM employees; 2 … 1 2 3-44 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 45. Using the 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 3-45 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 46. Using the NULLIF Function 1 SELECT first_name, LENGTH(first_name) "expr1", last_name, LENGTH(last_name) "expr2", 2 FROM NULLIF(LENGTH(first_name), LENGTH(last_name)) result employees; 3 … 1 2 3 3-46 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 47. Using the COALESCE Function • The advantage of the COALESCE function over the NVL function is that the COALESCE function can take multiple alternate values. • If the first expression is not null, the COALESCE function returns that expression; otherwise, it does a COALESCE of the remaining expressions. 3-47 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 48. Using the COALESCE Function SELECT last_name, COALESCE(manager_id,commission_pct, -1) comm FROM employees ORDER BY commission_pct; … 3-48 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 49. Conditional Expressions • Provide the use of IF-THEN-ELSE logic within a SQL statement • Use two methods: – CASE expression – DECODE function 3-49 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 50. CASE Expression Facilitates conditional inquiries by doing the work of an IF-THEN-ELSE statement: CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr] END 3-50 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 51. Using the CASE Expression 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; … … 3-51 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 52. Using the CASE Expression Facilitates conditional inquiries by doing the work of an IF-THEN-ELSE statement: SELECT last_name, job_id, salary,hire_date, CASE WHEN months_between(sysdate,hire_date)/12>=20 THEN 2.00*salary 2.00* WHEN job_id in ('ST_CLERK','SA_REP') ('ST_CLERK' 'SA_REP') 'ST_CLERK', THEN 1.15*salary 1.15* WHEN salary<=5000 THEN 1.20*salary 1.20* ELSE salary END "REVISED_SALARY" FROM employees; 3-52 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 53. DECODE Function Facilitates conditional inquiries by doing the work of a CASE expression or an IF-THEN-ELSE statement: DECODE(col|expression, search1, result1 [, search2, result2,...,] [, default]) 3-53 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 54. Using the DECODE Function 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; … … 3-54 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 55. Using the DECODE Function Display the applicable tax rate for each employee in department 80: SELECT 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_RATE FROM employees WHERE department_id = 80; 3-55 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 56. Summary In this lesson, you should have learned how to: • Perform calculations on data using functions • Modify individual data items using functions • Manipulate output for groups of rows using functions • Alter date formats for display using functions • Convert column data types using functions • Use NVL functions • Use IF-THEN-ELSE logic 3-56 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 57. Practice 3: Overview of Part 2 This practice covers the following topics: • Creating queries that require the use of numeric, character, and date functions • Using concatenation with functions • Writing case-insensitive queries to test the usefulness of character functions • Performing calculations of years and months of service for an employee • Determining the review date for an employee 3-57 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 58. Practice 3 Q1: Which two are character manipulation functions? (Choose two.) A. TRIM B. REPLACE C. TRUNC D. TO_DATE E. MOD F. CASE 3-58 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 59. Practice 3 Q2:The CUSTOMERS table has these columns: Q2:The CUSTOMER_ID NUMBER(4) NOT NULL CUSTOMER_NAME VARCHAR2(100) NOT NULL STREET_ADDRESS VARCHAR2(150) CITY_ADDRESS VARCHAR2(50) STATE_ADDRESS VARCHAR2(50) PROVINCE_ADDRESS VARCHAR2(50) COUNTRY_ADDRESS VARCHAR2(50) POSTAL_CODE VARCHAR2(12) CUSTOMER_PHONE VARCHAR2(20) 3-59 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 60. Practice 3 Q2: A promotional sale is being advertised to the customers in France. Which WHERE clause identifies customers that are located in France? A. WHERE lower(country_address) = "france" B. WHERE lower(country_address) = 'france' C. WHERE lower(country_address) IS 'france' D. WHERE lower(country_address) = '%france%' E. WHERE lower(country_address) LIKE %france% 3-60 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 61. Practice 3 Q3: Which SELECT statement will get the result 'elloworld' from the string 'HelloWorld'? A. SELECT SUBSTR( 'HelloWorld',1) FROM dual; B. SELECT INITCAP(TRIM ('HelloWorld', 1,1)) FROM dual; C. SELECT LOWER(SUBSTR('HelloWorld', 1, 1) FROM dual; D. SELECT LOWER(SUBSTR('HelloWorld', 2, 1) FROM dual; E. SELECT LOWER(TRIM ('H' FROM 'HelloWorld')) FROM dual; 3-61 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 62. Practice 3 Q4:Evaluate the SQL statement: Q4:Evaluate SELECT LPAD(salary,10,*) FROM EMP LPAD(salary,10,* WHERE EMP_ID = 1001; If the employee with the EMP_ID 1001 has a salary of 17000, what is displayed? A. 17000.00 B. 17000***** 17000* C. ****170.00 D. **17000.00 E. an error statement 3-62 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 63. Practice 3 Q5:Evaluate the SQL statement: Q5:Evaluate SELECT ROUND(TRUNC(MOD(1600,10),-1),2) FROM dual; What will be displayed? A. 0 B. 1 C. 0.00 D. an error statement 3-63 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 64. Practice 3 Q6:Which SELECT statement should you use to Q6:Which extract the year from the system date and display it in the format "1998"? A. SELECT TO_CHAR(SYSDATE,'yyyy') FROM dual; B. SELECT TO_DATE(SYSDATE,'yyyy') FROM dual; C. SELECT DECODE(SUBSTR(SYSDATE, 8), 'YYYY') FROM dual; D. SELECT DECODE(SUBSTR(SYSDATE, 8), 'year') FROM dual; E. SELECT TO_CHAR(SUBSTR(SYSDATE, 8,2),'yyyy') FROM dual; 3-64 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 65. Practice 3 Q7:Which three SELECT statements display 2000 in Q7:Which the format "$2,000.00"? A. SELECT TO_CHAR(2000, '$#,###.##') FROM dual; B. SELECT TO_CHAR(2000, '$0,000.00') FROM dual; C. SELECT TO_CHAR(2000, '$9,999.00') FROM dual; D. SELECT TO_CHAR(2000, '$9,999.99') FROM dual; E. SELECT TO_CHAR(2000, '$2,000.00') FROM dual; F. SELECT TO_CHAR(2000, '$N,NNN.NN') FROM dual; 3-65 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 66. Practice 3 Q8:Which SQL statement displays the date March 19, Q8:Which 2001 in a format that appears as "Nineteenth of March 2001 12:00:00 AM"? A. SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD- Mon-YYYY'), 'fmDdspth "of" Month YYYY fmHH:MI:SS AM') NEW_DATE FROM dual; B. SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD- Mon-YYYY'), 'Ddspth "of" Month YYYY fmHH:MI:SS AM') NEW_DATE FROM dual; 3-66 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn
  • 67. Practice 3 C. SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD- Mon-YYYY'), 'fmDdspth "of" Month YYYY HH:MI:SS AM') NEW_DATE FROM dual; D. SELECT TO_CHAR(TO_DATE('19-Mar-2001', 'DD- Mon-YYYY'), 'fmtDdspth "of" Month YYYY fmtHH:MI:SS AM') NEW_DATE FROM dual; fmtHH:MI:SS 3-67 Copyright © 2011, www.OracleOnLinux . All rights reserved. OracleOnLinux OracleOnLinux.cn