经常在前辈们的SQL中可以看到CAST的用法,例如:
WITH T AS(SELECT LEVEL||' ' L FROM DUAL CONNECT BY LEVEL<=5),
A(A,V) AS(SELECT CAST(L AS VARCHAR(30)),1 FROM T
UNION ALL
SELECT A||L,V+1 FROM A, T WHERE INSTR(A,L)=0 AND V<5
)
SELECT * FROM A;
例如上面的with递归语句,但是CAST因为用的比较少,今天就先给自己扫个盲了,引用Oracle的官方文档中对于CAST的描述如下:
CAST
CAST converts values from one data type to another.
Return Value
The data type specified by type_name.
Syntax
CAST(expr AS type_name)
Arguments
expr can be an expression in one of the data types.
type_name is one of the data types listed in Table1-2,"Dimensional Data Types".
Table 3-1 shows which data types can be cast into which other built-in data types. NUMBER includes NUMBER, DECIMAL, and INTEGER. DATETIME includes DATE,TIMESTAMP, TIMESTAMP WITH TIMEZONE, and TIMESTAMP WITH LOCAL TIMEZONE. INTERVAL includes INTERVAL DAY TO SECOND and INTERVAL YEAR TO MONTH.
Table 3-1 Compatible Data Types
FromTo BINARY_FLOAT, BINARY_DOUBLETo CHAR, VARCHAR2To NUMBERTo DATETIME, INTERVALTo NCHAR, NVARCHAR2
BINARY_FLOAT, BINARY_DOUBLE
yes
yes
yes
no
yes