数据类型强制转型和转换

有时,使用 CREATE TABLE 语句指定给列的数据类型不适用。当需要存储比当前数据类型所能容纳的值更大的值时,您可以更改列的数据类型。数据库服务器允许您使用下列方法之一来更改列的数据类型或者将列的值强制转型为另一数据类型:
  • 使用 ALTER TABLE 语句来修改列的数据类型。

    例如,如果您创建了 SMALLINT 列,后来发现必须存储大于 32,767 的整数,那么必须更改该列的数据类型才能存储更大的值。可以使用 ALTER TABLE 来将数据类型更改为 INTEGER。该转换会更改当前存在于列中的所有值和可能添加的任何新值的数据类型。

  • 使用 CAST AS 关键字或双冒号 (::) 强制转型运算符来将值强制转型为另一种数据类型。

    强制转型并不会永久地改变值的数据类型;它只是以更方便的形式表示值。将用户定义的数据类型强制转型为内置类型使客户机程序能够在不知道数据类型的内部结构的情况下处理这些数据类型。

如果更改数据类型,那么新数据类型必须能够存储所有旧的值。

数据类型转换和强制转型都取决于在 syscasts 系统目录表中注册的强制转型。有关 syscasts 的信息,请参阅 SYSCASTS

强制转型是内置的或用户定义的。存在强制转型单值和扩展数据类型的准则。有关对不透明数据类型强制转型的更多信息,请参阅 GBase 8s 用户定义的例程与数据类型开发者指南。有关对其他扩展数据类型进行强制转型的信息,请参阅《GBase 8s 数据库设计和实现指南》。