特定のデータ・タイプの値を別のデータ・タイプへ、 またはデータ・タイプは同じでも長さ、精度、 または位取りが異なるデータ・タイプへキャスト する必要がよく生じます。 データ・タイプのプロモーション (データ・タイプのプロモーションで定義されている) は、 あるデータ・タイプから別のデータ・タイプへのプロモーションにおいて、 値を新しいデータ・タイプへキャストすることが必要になる 1 つの例です。 別のデータ・タイプへキャストできるデータ・タイプは、 ソース・データ・タイプから宛先データ・タイプへキャスト可能 であるといいます。
データ・タイプ間でのキャストは、 CAST 仕様 (CAST 指定を参照) を使用して明示的に行うことができますが、 ユーザー定義タイプを含む割り当て (ユーザー定義タイプの割り当てを参照) の過程で暗黙的に行われる場合もあります。 また、ソース関数から派生するユーザー定義関数を作成するとき (CREATE FUNCTIONを参照) は、 ソース関数のパラメーターのデータ・タイプが、 作成しようとしている関数のデータ・タイプにキャスト可能なものでなければなりません。
組み込みデータ・タイプの間でサポートされているキャストを、 表 6 に示します。
特殊タイプに関する以下のキャストがサポートされています。
構造タイプの値を何か別のものにキャストすることはできません。 ST のスーパータイプに対するすべてのメソッドは、 ST に当てはまるので、構造タイプ ST を、 そのスーパータイプのいずれかにキャストすべきではありません。 必要な操作が ST のサブタイプだけに当てはまる場合、 サブタイプ処理式を使用して、ST をサブタイプの 1 つとして扱います。 詳しくは、サブタイプの扱いを参照してください。
キャストに含まれるユーザー定義データ・タイプがスキーマ名によって修飾されていない場合、 SQL パス が、 ユーザー定義データ・タイプを含む最初のスキーマをその名前で検出するために使用されます。 SQL パスについては、CURRENT PATH を参照してください。
参照タイプに関して、以下のキャストがサポートされています。
キャストに含まれる参照データ・タイプのターゲット・タイプがスキーマ名によって修飾されていない場合、
SQL パス が、
ユーザー定義データ・タイプを含む最初のスキーマをその名前で検出するために使用されます。
SQL パスについては、CURRENT PATH を参照してください。
ターゲット・データ・タイプ > ソース・データ・タイプ V |
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 |
C H A R |
V A R C H A R |
L O N G V A R C H A R |
C L O B |
G R A P H I C |
V A R G R A P H I C |
L O N G V A R G |
D B C L O B |
D A T E |
T I M E |
T I M E S T A M P |
B L O B |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SMALLINT | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - |
INTEGER | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - |
BIGINT | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - |
DECIMAL | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - |
REAL | Y | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - |
DOUBLE | Y | Y | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - |
CHAR | Y | Y | Y | Y | - | - | Y | Y | Y | Y | - | Y | - | - | Y | Y | Y | Y |
VARCHAR | Y | Y | Y | Y | - | - | Y | Y | Y | Y | - | Y | - | - | Y | Y | Y | Y |
LONG VARCHAR | - | - | - | - | - | - | Y | Y | Y | Y | - | - | - | - | - | - | - | Y |
CLOB | - | - | - | - | - | - | Y | Y | Y | Y | - | - | - | - | - | - | - | Y |
GRAPHIC | - | - | - | - | - | - | - | - | - | - | Y | Y | Y | Y | - | - | - | Y |
VARGRAPHIC | - | - | - | - | - | - | - | - | - | - | Y | Y | Y | Y | - | - | - | Y |
LONG VARG | - | - | - | - | - | - | - | - | - | - | Y | Y | Y | Y | - | - | - | Y |
DBCLOB | - | - | - | - | - | - | - | - | - | - | Y | Y | Y | Y | - | - | - | Y |
DATE | - | - | - | - | - | - | Y | Y | - | - | - | - | - | - | Y | - | - | - |
TIME | - | - | - | - | - | - | Y | Y | - | - | - | - | - | - | - | Y | - | - |
TIMESTAMP | - | - | - | - | - | - | Y | Y | - | - | - | - | - | - | Y | Y | Y | - |
BLOB | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | Y |
注
|