Oracle PL/SQL/Conversion Functions/CAST

Материал из SQL эксперт
Перейти к: навигация, поиск

cast(12.98 as number(2))

  
SQL>
SQL> select cast(12.98 as number(2)) example1
  2  ,      cast("oak" as char(10) ) example2
  3  ,      cast(null as date ) example3
  4  from   dual;
  EXAMPLE1 EXAMPLE2   EXAMPLE3
---------- ---------- ----------
        13 oak
SQL>



CAST() convertS one built-in data type (cast) into another

   
SQL>
Syntax: CAST(<expression> | [(subquery)] | [MULTISET (subquery)] AS type_name)
SQL>
SQL> SELECT CAST("05-JUN-2004" AS DATE) + 3  threedaysahead
  2  FROM dual;
THREEDAYS
---------
08-JUN-04



cast(null as date )

  
SQL>
SQL> select cast(12.98 as number(2)) example1
  2  ,      cast("oak" as char(10) ) example2
  3  ,      cast(null as date ) example3
  4  from   dual;
  EXAMPLE1 EXAMPLE2   EXAMPLE3
---------- ---------- ----------
        13 oak
SQL>



Cast null as timestamp

  
SQL> SELECT CAST(NULL AS TIMESTAMP WITH LOCAL TIME ZONE) from dual;
CAST(NULLASTIMESTAMPWITHLOCALTIMEZONE)
---------------------------------------------------------------------------



Cast string to date type before comparison

  
SQL> create table emp
  2  ( empno      NUMBER(4)    constraint E_PK primary key
  3  , ename      VARCHAR2(8)
  4  , init       VARCHAR2(5)
  5  , job        VARCHAR2(8)
  6  , mgr        NUMBER(4)
  7  , bdate      DATE
  8  , sal       NUMBER(6,2)
  9  , comm       NUMBER(6,2)
 10  , deptno     NUMBER(2)    default 10
 11  ) ;
Table created.
SQL> insert into emp values(1,"Tom","N",   "Coder", 13,date "1965-12-17",  800 , NULL,  20);
1 row created.
SQL> insert into emp values(2,"Jack","JAM", "Tester",6,date "1961-02-20",  1600, 300,   30);
1 row created.
SQL> insert into emp values(3,"Wil","TF" ,  "Tester",6,date "1962-02-22",  1250, 500,   30);
1 row created.
SQL> insert into emp values(4,"Jane","JM",  "Designer", 9,date "1967-04-02",  2975, NULL,  20);
1 row created.
SQL> insert into emp values(5,"Mary","P",  "Tester",6,date "1956-09-28",  1250, 1400,  30);
1 row created.
SQL> insert into emp values(6,"Black","R",   "Designer", 9,date "1963-11-01",  2850, NULL,  30);
1 row created.
SQL> insert into emp values(7,"Chris","AB",  "Designer", 9,date "1965-06-09",  2450, NULL,  10);
1 row created.
SQL> insert into emp values(8,"Smart","SCJ", "Coder", 4,date "1959-11-26",  3000, NULL,  20);
1 row created.
SQL> insert into emp values(9,"Peter","CC",   "Designer",NULL,date "1952-11-17",  5000, NULL,  10);
1 row created.
SQL> insert into emp values(10,"Take","JJ", "Tester",6,date "1968-09-28",  1500, 0,     30);
1 row created.
SQL> insert into emp values(11,"Ana","AA",  "Coder", 8,date "1966-12-30",  1100, NULL,  20);
1 row created.
SQL> insert into emp values(12,"Jane","R",   "Manager",   6,date "1969-12-03",  800 , NULL,  30);
1 row created.
SQL> insert into emp values(13,"Fake","MG",   "Coder", 4,date "1959-02-13",  3000, NULL,  20);
1 row created.
SQL> insert into emp values(14,"Mike","TJA","Manager",   7,date "1962-01-23",  1300, NULL,  10);
1 row created.
SQL>
SQL>
SQL> select e.ename as emp
  2  ,      m.ename as Designer
  3  from   emp m
  4         JOIN
  5         emp e
  6         ON e.mgr = m.empno
  7  where  e.bdate > date "1965-01-01"
  8  order  by emp;
EMP      DESIGNER
-------- --------
Ana      Smart
Chris    Peter
Jane     Black
Jane     Peter
Take     Black
Tom      Fake
6 rows selected.
SQL>
SQL> drop table emp;
Table dropped.