提升数据类型
数据类型可以分为多个由相关数据类型组成的组。 在此类组中,存在优先顺序(即认为一种数据类型应排在另一种数据类型之前)。 此优先级允许将一种数据类型提升为优先顺序中后面的数据类型。
例如,数据类型 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 |
| decimal | 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 |
注:
|
|