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