BIGINT 是一种 8 字节整数数据类型,用于 CREATE TABLE 和 ALTER TABLE 语句。语法
在
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);