標籤: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
本文出自 “oralce學習之路” 部落格,請務必保留此出處http://dushuai.blog.51cto.com/9461011/1568249
Oracle cast函數對使用者資料進行類型轉換