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寶典今日頭條號地址:
.............................................................................................................................................
● QQ群號:230161599(滿)、618766405
● 微信群:可加我微信,我拉大家進群,非誠勿擾
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-12-01 09:00 ~ 2017-12-31 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
.............................................................................................................................................
● 小麥苗的微店:
● 小麥苗出版的資料庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/
.............................................................................................................................................
使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。
小麥苗的微信公眾號 小麥苗的DBA寶典QQ群2 《DBA筆試面寶典》讀者群 小麥苗的微店
.............................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2149297/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL中的cast()函式SQLAST函式
- SQL Server 2016 函式:CASTSQLServer函式AST
- 簡單介紹SQL中ISNULL函式使用方法SQLNull函式
- Oracle中Decode()函式的使用Oracle函式
- 函式式API簡介函式API
- oracle常用函式介紹Oracle函式
- php 函式簡介PHP函式
- Python中的高階函式簡介Python函式
- 10-函式-1-函式簡介函式
- (譯) 函式式 JS #1:簡介函式JS
- 原創:oracle聚合函式介紹Oracle函式
- C++中scanf和printf系列函式簡介C++函式
- python函式作用域簡介Python函式
- 實用函式式 Java (PFJ)簡介函式Java
- Spark SQL使用簡介(2)--UDF(使用者自定義函式)SparkSQL函式
- 簡單介紹Python中的配對函式zip()Python函式
- 【OpenCV-Python】專案中遇到的關鍵函式原理及使用簡介OpenCVPython函式
- VFS簡介和核心操作函式函式
- 工作中,Oracle常用函式Oracle函式
- Oracle中pivot函式詳解Oracle函式
- 簡單介紹JS函式防抖和函式節流JS函式
- TypeScript基礎入門-函式-簡介TypeScript函式
- oracle 系統使用者簡介Oracle
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- javascript函式中with的介紹JavaScript函式
- oracle 函式Oracle函式
- oracle or 函式Oracle函式
- 6、Oracle中的分組函式Oracle函式
- C/C++中的new/delete、構造/解構函式、dynamic_cast分析C++delete函式AST
- 使用Oracle自帶profile以及函式簡單設定Oracle使用者名稱密碼規則Oracle函式密碼
- match函式簡單介紹以及與index函式結合應用函式Index
- Oracle:PGA 簡介Oracle
- Oracle Text簡介Oracle
- Oracle PSU 簡介Oracle
- Oracle:srvctl 簡介Oracle
- javascript中generator函式的介紹JavaScript函式
- Oracle常用函式Oracle函式
- 7 Oracle 函式Oracle函式
- Oracle 字串函式Oracle字串函式