更新时间:2023-03-17 GMT+08:00

CHANGE DATA TYPE

命令功能

CHANGE命令用于将数据类型从INT更改为BIGINT或将Decimal精度从低精度改为高精度。

命令语法

ALTER TABLE [db_name.]table_name CHANGE col_name col_name changed_column_type;

参数描述

表1 CHANGE DATA TYPE参数描述

参数

描述

db_name

数据库名。若未指定,则选择当前数据库。

table_name

表名。

col_name

表中的列名称。列名称包含字母,数字和下划线(_)。

changed_column_type

所要更改为的新数据类型。

注意事项

  • 仅在没有数据丢失的情况下支持将Decimal数据类型从较低精度更改为较高精度

    例如:

    • 无效场景:将Decimal数据精度从(10,2)更改为(10,5)无效,因为在这种情况下,只有scale增加,但总位数保持不变。
    • 有效场景:将Decimal数据精度从(10,2)更改为(12,3)有效,因为总位数增加2,但是scale仅增加1,这不会导致任何数据丢失。
  • 将Decimal数据类型从较低精度更改为较高精度,其允许的最大精度(precision, scale)范围为(38,38),并且只适用于不会导致数据丢失的有效提升精度的场景。

示例

  • 将列a1的数据类型从INT更改为BIGINT。

    ALTER TABLE test_db.carbon CHANGE a1 a1 BIGINT;

  • 将列a1的精度从10更改为18。

    ALTER TABLE test_db.carbon CHANGE a1 a1 DECIMAL(18,2);

系统响应

通过运行DESCRIBE命令,将显示被修改列变更后的数据类型。