Oracle中CAST函式使用簡介
Oracle中CAST函式使用簡介
CAST()函式可以進行資料型別的轉換。
CAST()函式的引數有兩部分,源值和目標資料型別,中間用AS關鍵字分隔。
以下例子均通過本人測試。
一、轉換列或值
語法:cast( 列名/值 as 資料型別 )
用例:
1)、轉換列
--將empno的型別(number)轉換為varchar2型別。
select cast(empno as varchar2(10)) as empno from emp;
EMPNO
----------
7369
7499
7521
...
2)、轉換值
--將字串轉換為整型。
SELECT CAST('123' AS int) as result from dual;
RESULT
---
123
返回值是整型值123。
--如果試圖將一個代表小數的字串轉換為整型值,又會出現什麼情況呢?
SELECT CAST('123.4' AS int) as result from dual;
RESULT
--------
123
SELECT CAST('123.6' AS int) as result from dual;
RESULT
--------
124
從上面可以看出,CAST()函式能執行四捨五入操作。
--截斷小數
SELECT CAST('123.447654' AS decimal(5,2)) as result from dual;
RESULT
-----------
123.45
decimal(5,2)表示值總位數為5,精確到小數點後2位。
SELECT CAST('123.4' AS decimal) as result from dual;
結果是一個整數值:
123
二、轉換一個集合
語法:cast( multiset(查詢語句) as 資料型別 )
1)轉換成table
例子:
--學生成績表
create table stu_score
(stu_no varchar2(50),--學號
score number--總分
);
insert into stu_score values('201301',67);
insert into stu_score values('201302',63);
insert into stu_score values('201303',77);
insert into stu_score values('201304',68);
insert into stu_score values('201305',97);
insert into stu_score values('201306',62);
insert into stu_score values('201307',87);
commit;
------------------------------------------
select * from stu_score;
學號 分數
-------- ----------
201301 67
201302 63
201303 77
201304 68
201305 97
201306 62
201307 87
--獎學金錶。
--獎學金錶規定了名次,每個名次的人數和獎金。
create table scholarship
(
stu_rank varchar(10),--名次
stu_num int,--限定人數
money number--獎金
);
insert into scholarship values('1',1,'1000');
insert into scholarship values('2',2,'500');
insert into scholarship values('3',3,'100');
commit;
-----------------------------------------------
select * from scholarship;
名次 人數 獎金
---------- --------------------------------------- ----------
1 1 1000
2 2 500
3 3 100
現在要根據成績表的成績降序排列,按獎學金錶的名額確定排名和獎金。排名時不考慮相同成績。
排名的結果應該如下:
學號 成績 名次 獎金
201305 97 1 1000
201307 87 2 500
201303 77 2 500
201304 68 3 100
201301 67 3 100
201302 63 3 100
SELECT c.stu_no,c.score,b.stu_rank,b.money
FROM (SELECT c.*,ROW_NUMBER() OVER(ORDER BY score DESC) rn FROM stu_score c) c
,(SELECT b.stu_rank,b.money,ROW_NUMBER() OVER(ORDER BY b.stu_rank) rn
FROM scholarship b
, TABLE( CAST( MULTISET( SELECT NULL
FROM DUAL
CONNECT BY LEVEL <= b.stu_num
)
AS SYS.ODCIVARCHAR2LIST )
)
) b
WHERE c.rn=b.rn;
執行結果如下:
STU_NO SCORE STU_RANK MONEY
-------------------------------------------------- ---------- ---------- ----------
201305 97 1 1000
201307 87 2 500
201303 77 2 500
201304 68 3 100
201301 67 3 100
201302 63 3 100
通過對比發現,確實達到了目的。
此外cast還能轉化成collection,varray,此時都需要記過multiset集合函式一起使用。
About Me
.............................................................................................................................................
● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除
● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● DBA寶典今日頭條號地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826
.............................................................................................................................................
● QQ群號:230161599(滿)、618766405
● 微信群:可加我微信,我拉大家進群,非誠勿擾
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-12-01 09:00 ~ 2017-12-31 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
.............................................................................................................................................
● 小麥苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
● 小麥苗出版的資料庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/
.............................................................................................................................................
使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。
小麥苗的微信公眾號 小麥苗的DBA寶典QQ群2 《DBA筆試面寶典》讀者群 小麥苗的微店
.............................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2149297/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle function函式castOracleFunction函式AST
- Oracle CAST函式不生效OracleAST函式
- SQL中的cast()函式SQLAST函式
- js中匿名函式的使用簡單介紹JS函式
- 簡單介紹SQL中ISNULL函式使用方法SQLNull函式
- ORACLE函式介紹第五篇 分析函式簡述Oracle函式
- 函式式 JavaScript 簡介函式JavaScript
- Oracle 分析函式使用介紹(轉)Oracle函式
- oracle lag與lead分析函式簡介Oracle函式
- php 函式簡介PHP函式
- cast函式的用法案例AST函式
- 【函式】Oracle中聚合函式rank()使用方法函式Oracle
- Python中的高階函式簡介Python函式
- javascript匿名函式的使用簡單介紹JavaScript函式
- 正規表示式使用replace()函式簡單介紹函式
- ORACLE函式介紹Oracle函式
- Oracle中coalesce函式的簡單理解Oracle函式
- 10-函式-1-函式簡介函式
- 【原創】cast() 函式的用處AST函式
- oracle中函式to_char()的用法介紹Oracle函式
- C++中scanf和printf系列函式簡介C++函式
- (譯) 函式式 JS #1:簡介函式JS
- 函式表示式和函式宣告簡單介紹函式
- Oracle中Decode()函式的使用Oracle函式
- Oracle中關於函式的使用Oracle函式
- 【函式】Oracle TRIM函式語法介紹函式Oracle
- oracle常用函式介紹Oracle函式
- oracle REPLACE 函式 介紹Oracle函式
- oracle 日期函式介紹Oracle函式
- MATLAB函式randn簡介Matlab函式
- SQL Server 2016 函式:CASTSQLServer函式AST
- MySQL CAST與CONVERT 函式的用法MySqlAST函式
- jquery回撥函式中this的指向簡單介紹jQuery函式
- 實用函式式 Java (PFJ)簡介函式Java
- Spark SQL使用簡介(2)--UDF(使用者自定義函式)SparkSQL函式
- Oracle 的基本函式介紹Oracle函式
- 簡單介紹Python中的配對函式zip()Python函式
- python函式作用域簡介Python函式