使用内置强制转型

用户 gbasedbt 拥有内置强制转型。他们控制从一种内置数据类型到另一种内置数据类型的转换。内置强制转型允许数据库服务器尝试以下数据类型转换:
  • 字符类型至任何其他字符类型
  • 字符类型至另一种内置类型或从另一种内置类型至字符类型
  • 数字类型至任何其他数字类型

必要时,数据库服务器自动调用适当的内置强制转型。对于时间数据类型,DATE 与 DATETIME 数据类型之间的转换需要使用 EXTEND 函数进行显式强制转型,而对于数字与 INTERVAL 之间的转换,需要使用 UNITS 运算符进行显式强制转型。内置强制转型不可用于将大型(BYTE、BLOB、CLOB 和 TEXT)内置类型转换为其他内置数据类型。

当将列从一种内置数据类型转换为另一种时,数据库服务器将适当的内置强制转型应用于列中已存在的每个值。如果新的数据类型不能存储任何生成的值,那么 ALTER TABLE 语句会失败。

例如,如果您尝试将列从 INTEGER 数据类型转换为 SMALLINT 数据类型,并且 INTEGER 列中存在以下值,那么数据库服务器不会更改数据类型,因为 SMALLINT 列不能容纳大于 32,767 的数字:
100    400    700    50000      700

如果您尝试将数据从 FLOAT 或 SMALLFLOAT 列传送至 INTEGER、SMALLINT 或 DECIMAL 列,那么会发生相同的情况。在数据类型转换期间可能会发生溢出、下溢或截断错误。

下面各节描述某些类型的强制转型和转换期间的数据库服务器行为。