データ・タイプのプロモーション
データ・タイプは、 関連するいくつかのデータ・タイプからなるグループに分類されます。 そのようなグループの中では、 あるデータ・タイプを他のデータ・タイプより優先すると見なす優先順位が存在します。 この優先順位を使用すると、あるデータ・タイプを、 優先順位がそれより上のデータ・タイプにプロモートすること (プロモーション) が可能になります。
例えば、CHAR データ・タイプは VARCHAR に、 INTEGER は DOUBLE-PRECISION にプロモートできますが、 CLOB を VARCHAR にプロモートすることはできません。
データ・タイプのプロモーションは、以下の場合に使用されます。
- 関数解決を実行する場合
- ユーザー定義タイプをキャストする場合
- ユーザー定義タイプを組み込みデータ・タイプに割り当てる場合
表 1 は、各データ・タイプの優先順位リスト (順序) を示しており、特定のデータ・タイプをプロモートできるデータ・タイプを決定するために使用できます。 この表に示されているとおり、最適の選択は、
別のデータ・タイプへプロモートすることではなく、
常に同じデータ・タイプです。
データ・タイプ | データ・タイプ優先順位リスト (高いものから順に) |
---|---|
SMALLINT | SMALLINT、 INTEGER、 BIGINT、 decimal、 real、 double、 DECFLOAT |
整数 | INTEGER、 BIGINT、 decimal、 real、 double、 DECFLOAT |
BIGINT | BIGINT、 decimal、 real、 double、 DECFLOAT |
10 進 | decimal、 real、 double、 DECFLOAT |
real | real、 double、 DECFLOAT |
double | double、DECFLOAT |
DECFLOAT | DECFLOAT |
CHAR | CHAR, VARCHAR, CLOB |
VARCHAR | VARCHAR, CLOB |
CLOB | CLOB |
GRAPHIC | GRAPHIC, VARGRAPHIC, DBCLOB |
VARGRAPHIC | VARGRAPHIC, DBCLOB |
DBCLOB | DBCLOB |
BINARY | BINARY、VARBINARY、BLOB |
VARBINARY | VARBINARY、BLOB |
BLOB | BLOB |
日数 | DATE、TIMESTAMP |
時刻 | 時刻 |
TIMESTAMP | TIMESTAMP |
ブール値 | BOOLEAN |
CURSOR | CURSOR |
ARRAY | ARRAY |
udt | udt (同じ名前) または udt のスーパータイプ |
REF(T) | REF(S) (S が T のスーパータイプの場合) |
行 (Row) | 行 (Row) |
注:
|