Oracle cast函数对用户数据进行类型转换
一、cast函数
cast函数的作用是对用户输入的数据进行数据类型转换,比如用户数据的数据时number类型,小数位数是3位,我们可以将用户数据转换成×××数据int类型。
cast函数的格式是cast(数据源 as 待转换的数据类型)
比如我需要将number数据类型的13.658转换成int类型的整数类型
SQL> select cast(13.658 as int) from dual;
CAST(13.658ASINT)
---------------------------------------
14
通过上图我们可以看见,cast对number数据类型的数据进行四舍五入操作后保存成×××数据;
上面的效果类似于round函数。
但是cast函数作用的结果并不作用于数据库表结构,仅仅用户数据显示。举例如下:
--info表的数据记录如下:
SQL> select * from info;
SNO SNAME
--------------------------------------- --------------------
1 lilei
2 dushuai
3 caolirong
--info表字段结构
desc info
Name Type Nullable Default Comments
----- ------------ -------- ------- --------
SNO INTEGER
SNAME VARCHAR2(20) Y
--我们使用cast函数对sno字段进行数据类型转换,转换成number(8,4)
SQL> select cast(sno as number(8,4)) from info;
CAST(SNOASNUMBER(8,4))
----------------------
1.0000
2.0000
3.0000
--但是重新查找info表,结果如下
SQL> select * from info;
SNO SNAME
--------------------------------------- --------------------
1 lilei
2 dushuai
3 caolirong
--使用update函数进行info表更新
SQL> update info set sno=cast(sno as number(3,2)) where sno=1;
1 row updated
SQL> commit;
--重新查找info表,结果如下
SQL> select * from info;
SNO SNAME
--------------------------------------- --------------------
1 lilei
2 dushuai
3 caolirong
如果想利用cast函数实现数据类型的转换,可以考虑在基表的基础上创建视图或者新建另外一张表的方式。下例为在基表的基础上创建视图进而实现改变数据类型的目的:
SQL> create or replace view v_info as select cast(sno as number(3,2)) as v_sno from info;
View created
SQL> select * from v_info;
V_SNO
-----
1.00
2.00
3.00
SQL> desc v_info;
Name Type Nullable Default Comments
----- ----------- -------- ------- --------
V_SNO NUMBER(3,2) Y
SQL> desc info
Name Type Nullable Default Comments
----- ------------ -------- ------- --------
SNO INTEGER
SNAME VARCHAR2(20) Y