データ型変換のためのCAST()関数。
CAST()関数のパラメータとしてキーワードによって分離された2つの部分、ソースおよびターゲットデータ型の値を有します。
次の例では、自分でテストされています。
、または列値変換
構文:キャスト(データ型としてカラム名/値)
用例:
1)、コンバージョン列
- EMPNO種別(番号)がVARCHAR2型に変換されます。
EMPからEMPNOとして(VARCHAR2(10)などEMPNO)キャストを選択します。
EMPNO
----------
7369
7499
7521
...
2)変換値
-文字列を整数に変換します。
SELECT CAST( '123' int型AS )デュアルからの結果として、
RESULT
---
123
戻り値123の整数値です。
-あなたは10進数の整数値を表す文字列を変換しようとすると、何がその後起こるのだろうか?
SELECT CAST( '123.4' int型AS )デュアルからの結果として、
RESULT
--------
123
SELECT CAST( '123.6' int型AS)デュアルからの結果として、
RESULT
--------
124は、
丸め演算を実行することができる上、CAST()関数から見ることができます。
- 小数点以下を切り捨てます
SELECT CAST( '123.447654' 小数(5,2)AS)デュアルからの結果として、
RESULTは
-----------
123.45
小数(5,2)の値が5、2桁のビットの総数を表します。
CAST(小数AS「123.4」を選択デュアルから結果として)、
結果が整数値である:
123
第二に、変換の組
構文:(データ型としてマルチセット(クエリー))キャスト
1)テーブルに
例:
- 生徒の成績表
表stu_score作成
(stu_no VARCHAR2(50)、 -学号は
总分number--スコア
)。
stu_score値に挿入( '201301'、67);
stu_score値( '201302'、63)に挿入します。
stu_score値( '201303'、77)に挿入します。
stu_score値( '201304'、68)に挿入します。
stu_score値( '201305'、97)に挿入します。
stu_score値( '201306'、62)に挿入します。
stu_score値( '201307'、87)に挿入します。
コミット;
------------------------------------------
stu_scoreから*を選択します。
学生IDスコア
-------- ----------
201301 67
201302 63
201303 77
201304 68
201305 97
201306 62
201307 87
- 奨学金表。
- 奨学金の表は、ランキング、各順位番号とボーナスを指定します。
テーブルの奨学金を作成
(
-名次stu_rankのはvarchar(10)、
stu_num int型、 -限定人数
お金number--を奖金
)。
奨学金値( '1'、1、 '1000')に挿入します。
奨学金値に挿入( '2'、2 '500')。
奨学金値の挿入(3 ''、3、 '100')。
コミット;
-----------------------------------------------
奨学金から*を選択します。
ボーナスのランキングの数
---------- ------------------------------------- - ----------
。1. 1〜1000
2 500 2
3 3 100。
今奨学金割当テーブルに従って順位とボーナスを決定するために、結果テーブルに従って降順に検索結果に。ランク付けするときと同じ結果を考慮していません。
結果は以下のようにランク付けされる必要があります:
学習スコアランキングボーナス番号
201305. 1 1000年97
201307 87 500 2
201303 77 500 2
201304 68 3 100
201301 67 100 3
201302 63は100で3です
SELECT c.stu_no、c.score、b.stu_rank、b.money
FROM(CをSELECT *、stu_score CからスコアDESC)RN BY ROW_NUMBER()OVER(ORDER)C
、b.moneyを、(b.stu_rank SELECT、 RN(b.stu_rank BY ORDER)OVER ROW_NUMBER()
奨学金Bから
(CAST(MULTISET(NULL SELECT、表
DUAL FROM
CONNECT BY LEVEL <= b.stu_num
)
SYS.ODCIVARCHAR2LIST)AS
)
)B
c.rn = B。 RN;
次のように実行結果は以下のとおりです。
STU_NOスコアSTU_RANKのお金
---------------------------------------------- ---- ---------- ---------- ----------
201305 97 1〜1000
201307 87 2 500
201303 77 2 500
201304 68 3 100
201301 67 3 100
201302 63 3 100
比較すると、実際にそれはその目的を務めました。
さらに、キャストが機能マルチセットデメリットのセットを使用する必要性をコレクション、VARRAY、この時間に変換することができます。
転載します。https://www.cnblogs.com/hsz1124/p/7409994.html