CAST 関数

CAST関数�より値�型を他�型�変����。��動的�引数(?)やNULL値�型を与���。

CASTã?®å¼?ã?¯å¼?ã‚’ç½®ã??ã?“ã?¨ã?Œã?§ã??る場所ã?ªã‚‰ã?©ã?“ã?«ã?§ã‚‚ç½®ã??ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚

æ§‹æ–‡

CAST ( [ å¼? | NULL | ? ]
    AS データ型)

�をキャスト�る先�データ型���を目標型�����。キャスト�よ�����る��データ型���を�泉型�����。

CAST�よるSQL-92 データ型間�変�

以下ã?«ç¤ºã?™è¡¨ã?¯SQLデータ型ã?«ã?¦æ˜Žç¤ºçš„ã?ªå¤‰æ?›ã?Œæœ‰åйã?ªã€?æº?泉型ã?¨ç›®æ¨™åž‹ã‚’示ã?—ã?¾ã?™ã€‚ ã?“ã?®è¡¨ã?¯ä½•れã?®ãƒ‡ãƒ¼ã‚¿åž‹ã?®é–“ã?§æ˜Žç¤ºçš„ã?ªå¤‰æ?›ã?Œæœ‰åйã?ªã?®ã?‹ã‚’示ã?—ã?¾ã?™ã€‚ 表ã?®æœ€åˆ?ã?®åˆ—ã?¯æº?泉型を示ã?—ã?¾ã?™ã€‚表ã?®æœ€åˆ?ã?®è¡Œã?¯ç›®æ¨™åž‹ã‚’示ã?—ã?¾ã?™ã€‚ Yã?¯æº?泉型ã?‹ã‚‰ç›®æ¨™åž‹ã?¸ã?®åž‹ã?®å¤‰æ?›ã?Œæœ‰åйã?§ã?‚ã‚‹ã?“ã?¨ã‚’示ã?—ã?¾ã?™ã€‚ 例ã?ˆã?°ã€?二行目ã?®æœ€åˆ?ã?®ã‚³ãƒžã?«ã‚ˆã‚Šæº?泉型ã?¯SMALLINTã?¨è¨˜è¿°ã?•れã?¾ã?™ã€‚ 二行目ã?®ã?»ã?‹ã?®ã‚³ãƒžã?¯ã€?表ã?®æœ€åˆ?ã?®è¡Œã?«æ›¸ã?‹ã‚Œã?¦ã?„る型を目標型ã?¨ã?—ã?¦ã€?SMALLINTã?®åž‹ã‚’変æ?›ã?§ã??ã‚‹ã?‹å?¦ã?‹ã‚’記述ã?—ã?¾ã?™ã€‚
表 1. SQL-92 データ型間��明示的�変��有効���泉型�目標型
Types

S
M
A
L
L
I
N
T

I
N
T
E
G
E
R

B
I
G
I
N
T

D
E
C
I
M
A
L

R
E
A
L

D
O
U
B
L
E

F
L
O
A
T

C
H
A
R

V
A
R
C
H
A
R

L
O
N
G

V
A
R
C
H
A
R

C
H
A
R

F
O
R

B
I
T

D
A
T
A

V
A
R
C
H
A
R

F
O
R

B
I
T

D
A
T
A

L
O
N
G

V
A
R
C
H
A
R

F
O
R

B
I
T

D
A
T
A

C
L
O
B

B
L
O
B

D
A
T
E

T
I
M
E

T
I
M
E
S
T
A
M
P

X
M
L

SMALLINT Y Y Y Y Y Y Y Y - - - - - - - - - - -
INTEGER Y Y Y Y Y Y Y Y - - - - - - - - - - -
BIGINT Y Y Y Y Y Y Y Y - - - - - - - - - - -
DECIMAL Y Y Y Y Y Y Y Y - - - - - - - - - - -
REAL Y Y Y Y Y Y Y - - - - - - - - - - - -
DOUBLE Y Y Y Y Y Y Y - - - - - - - - - - - -
FLOAT Y Y Y Y Y Y Y - - - - - - - - - - - -
CHAR Y Y Y Y - - - Y Y Y - - - Y - Y Y Y -
VARCHAR Y Y Y Y - - - Y Y Y - - - Y - Y Y Y -
LONG VARCHAR - - - - - - - Y Y Y - - - Y - - - - -
CHAR FOR BIT DATA - - - - - - - - - - Y Y Y Y Y - - - -
VARCHAR FOR BIT DATA - - - - - - - - - - Y Y Y Y Y - - - -
LONG VARCHAR FOR BIT DATA - - - - - - - - - - Y Y Y Y Y - - - -
CLOB - - - - - - - Y Y Y - - - Y - - - - -
BLOB - - - - - - - - - - - - - - Y - - - -
DATE - - - - - - - Y Y - - - - - - Y - - -
TIME - - - - - - - Y Y - - - - - - - Y - -
TIMESTAMP - - - - - - - Y Y - - - - - - Y Y Y -
XML - - - - - - - - - - - - - - - - - - Y

変æ?›ã?Œæœ‰åйã?ªã‚‰ã€?CASTã?¯å?¯èƒ½ã?§ã?™ã€‚æº?泉型ã?¨ç›®æ¨™åž‹ã?®é–“ã?®å¤§ã??ã?•ã?®é?žäº’æ?›æ€§ã?¯ã€?実行時ã?«ã‚¨ãƒ©ãƒ¼ã‚’èµ·ã?“ã?™ã?“ã?¨ã?Œã?‚りã?¾ã?™ã€‚

但ã?—書ã??

��議論���Derby��SQL-92データ型��以下�よ��分類�れ��。

数値型�ら�型変�

数値型ã?¯ä»–ã?®ã?„ã?‹ã?ªã‚‹æ•°å€¤åž‹ã?«ã‚‚変æ?›ã?§ã??ã?¾ã?™ã€‚ã‚‚ã?—æ•°ã?®å°?数部ã?§ã?¯ã?ªã?„部分を切りæ?¨ã?¦ã?ªã?‘れã?°ã€?変æ?›ã?—ã?Ÿç›®æ¨™åž‹ã?§æ‰±ã?ˆã?ªã?„ã?ªã‚‰ã?°ä¾‹å¤–ã?Œç™ºç”Ÿã?—ã?¾ã?™ã€‚ã‚‚ã?—æº?泉型ã?®å°?数部を目標型ã?§æ‰±ã?ˆã?ªã?„ã?ªã‚‰ã?°ã€?目標型ã?«ã?¦æ‰±ã?ˆã‚‹ã‚ˆã?†æš—黙裡ã?«æº?泉型ã?®å€¤ã?¯åˆ‡ã‚Šæ?¨ã?¦ã‚‰ã‚Œã?¾ã?™ã€‚ã?Ÿã?¨ã?ˆã?°ã€?763.1234ã‚’INTEGERã?«å¤‰æ?›ã?™ã‚‹ã?¨763ã?¨ã?ªã‚Šã?¾ã?™ã€‚

ビット列�型��/�ら�型変�

ビット列ã?®åž‹ã?¯ä»–ã?®ãƒ“ット列ã?®åž‹ã?«å¤‰æ?›ã?§ã??ã?¾ã?™ã?Œã€?文字列ã?«å¤‰æ?›ã?™ã‚‹ã?“ã?¨ã?¯ã?§ã??ã?¾ã?›ã‚“。 文字列ã?®åž‹ã‚’ビット列ã?®åž‹ã?«å¤‰æ?›ã?™ã‚‹ã?¨ã€?目標ã?®ãƒ“ット型ã?®é•·ã?•ã?«ä¼šã?†ã‚ˆã?†ã?«ã€?末尾ã?Œ0ã?§è©°ã‚?られã?¾ã?™ã€‚BLOBåž‹ã?¯ã‚ˆã‚Šé™?定ã?•れã?¦ã?Šã‚Šã€?明示的ã?ªå¤‰æ?›ã‚’å¿…è¦?ã?¨ã?—ã?¾ã?™ã€‚ ã?»ã?¨ã‚“ã?©ã?®å ´å?ˆã€?BLOBåž‹ã?‹ã‚‰ã?¯/ã?¸ã?¯åž‹å¤‰æ?›ã?§ã??ã?¾ã?›ã‚“。

日/時�型変�

æ—¥/時ã?®å€¤ã?¯ã?„ã?‹ã?ªã‚‹å ´å?ˆã?§ã‚‚TIMESTAMPã?¸/ã?‹ã‚‰åž‹å¤‰æ?›ã?§ã??ã?¾ã?™ã€‚ DATEã?ŒTIMESTAMPã?«åž‹å¤‰æ?›ã?•れã?Ÿå ´å?ˆã€?çµ?æžœã?®TIMESTAMPã?«ã?¦TIMEã?®éƒ¨åˆ†ã?¯å¸¸ã?«00:00:00ã?§ã?™ã€‚ ã‚‚ã?—TIMEã?ŒTIMESTAMPã?«åž‹å¤‰æ?›ã?•れã?Ÿå ´å?ˆã€?çµ?æžœã?®TIMESTAMPã?«ã?¦DATEã?®éƒ¨åˆ†ã?¯ã€?CASTã?Œå®Ÿè¡Œã?•れã?Ÿã?¨ã??ã?®CURRENT_DATEã?®å€¤ã?¨ã?ªã‚Šã?¾ã?™ã€‚ TIMESTAMPã?ŒDATEã?«åž‹å¤‰æ?›ã?•れる場å?ˆã€?TIMEã?®éƒ¨åˆ†ã?¯æš—黙裡ã?«åˆ‡ã‚Šæ?¨ã?¦ã‚‰ã‚Œã?¾ã?™ã€‚ TIMESTAMPã?ŒTIMEã?«åž‹å¤‰æ?›ã?•れる場å?ˆã€?DATEã?®éƒ¨åˆ†ã?¯æš—黙裡ã?«åˆ‡ã‚Šæ?¨ã?¦ã‚‰ã‚Œã?¾ã?™ã€‚

SELECT CAST (miles AS INT)
FROM Flights
-- timestampを文字列�変��る
INSERT INTO mytable (text_column)
VALUES (CAST (CURRENT_TIMESTAMP AS VARCHAR(100)))
-- NULLを�切�データ型�変����れ��ら��。
SELECT airline
FROM Airlines
UNION ALL
VALUES (CAST (NULL AS CHAR(2)))
-- doubleをdecimal�変��る。
SELECT CAST (FLYING_TIME AS DECIMAL(5,2))
FROM FLIGHTS
-- SMALLINTをBIGINT�変��る
VALUES CAST (CAST (12 as SMALLINT) as BIGINT)

XML値�変�

明示的ã?«ã‚‚暗黙的ã?«ã‚‚ã€?XMLã?®å€¤ã?¯XML以外ã?®å¦‚何ã?ªã‚‹åž‹ã?¸ã‚‚型変æ?›ã?§ã??ã?¾ã?›ã‚“。XML型を文字列型ã?«ã?™ã‚‹å ´å?ˆã?¯ã€?XMLSERIALIZE 演算å­?を使ã?£ã?¦ã??ã? ã?•ã?„。