一、语法
在 CREATE TABLE 语句的列定义中:
column_name BIGINT
二、范围
·取值范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
·注意:TCHouse-X 不支持无符号(UNSIGNED)子类型。
三、隐式转换
TCHouse-X 会自动将 BIGINT 转换为浮点类型(FLOAT 或 DOUBLE)。
四、显式转换
·转换为 TINYINT、SMALLINT、INT、STRING 或 TIMESTAMP 必须使用 CAST()。
·TIMESTAMP/TIMESTAMPTZ 转换规则:将整数值 N 转换为 TIMESTAMP/TIMESTAMPTZ时,系统会生成一个以 Unix 纪元(1970-01-01 00:00:00 UTC)为基准、增加 N 秒后的时间戳。在查询展示时,该值会自动转换为当前系统时区对应的本地时间。
·TIMESTAMPNTZ 转换规则:将整数值 N 转换为 TIMESTAMPNTZ时,系统会生成一个以 Unix 纪元(1970-01-01 00:00:00 UTC)为基准、增加 N 秒后的时间戳。
五、使用说明与建议
·选型权衡:BIGINT 在声明列时非常方便,因为它可以容纳任何整数值,且在 INSERT 时会自动进行类型提升。然而,它是占用空间最大的整数类型(磁盘和内存均占 8 字节)。过度使用会导致查询效率下降,扩展性变差。
·最佳实践:优先使用能容纳输入值的最小整数类型。仅在必要时使用 CAST() 转换为大类型。
·溢出处理:如果数值超过了 BIGINT 的范围,请使用具有足够精度的 DECIMAL 类型。
·NULL 处理:将任何非数字值强制转换为此类型将产生 NULL。
·分区 (Partitioning):优先使用此类型作为分区键列。相比字符串形式,Impala 处理数值类型的效率更高。
六、示例
— 创建包含 BIGINT 的表CREATE TABLE t1 (x BIGINT);– 显式转换示例SELECT CAST(1000 AS BIGINT);