📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

数据类型



TiDB Cloud Lake 将数据存储在强类型列中。本页概述支持的数据类型、自动/显式转换的工作方式,以及 NULL 或默认值的处理行为。

基础类型

数据类型别名存储 / 精度最小值最大值
BOOLEANBOOL1 字节––
BINARYVARBINARY可变––
VARCHARSTRING可变––
TINYINTINT81 字节-128127
SMALLINTINT162 字节-3276832767
INTINT324 字节-21474836482147483647
BIGINTINT648 字节-92233720368547758089223372036854775807
FLOAT–4 字节 (Float32)-3.40e383.40e38
DOUBLE–8 字节 (Float64)-1.79e3081.79e308
DECIMAL–16/32 字节 (精度 ≤38/76)-(10^P-1)/10^S(10^P-1)/10^S

日期和时间类型

数据类型别名精度 / 说明
DATE–天级精度
TIMESTAMPDATETIME微秒,按会话时区输出
TIMESTAMP_TZ–微秒 + 存储偏移
INTERVAL–微秒,支持负时间跨度

结构化与半结构化类型

数据类型示例说明
ARRAY[1, 2, 3]具有相同内部类型的有序值列表。
TUPLE('2023-02-14','Valentine's Day')具有已声明元素类型的定长有序列表。
MAP{'a': 1, 'b': 2}键值集合(内部表示为键类型和值类型的元组)。
VARIANT[1, {"name":"datalake"}]类似 JSON 的容器,可混合原语、数组和对象。
BITMAP<bitmap binary>针对成员关系和集合运算优化的压缩位图。

领域特定类型

数据类型说明
VECTOR用于相似度搜索 / ML 工作负载的 Float32 向量嵌入。
GEOMETRY / GEOGRAPHY以 WKB/EWKB 格式存储的空间对象。

类型转换与转换规则

显式类型转换

  • CAST(expr AS TYPE) 使用 ANSI 语法,在转换无效时会失败。
  • expr::TYPE 是 PostgreSQL 风格的简写。
  • TRY_CAST(expr AS TYPE) 在转换失败时返回 NULL,而不是抛出错误。

隐式类型转换(Coercion)

TiDB Cloud Lake 会在定义明确的场景下执行自动转换:

  1. 整数型会向上提升为 INT64。例如:UInt8 -> INT64。
  2. 数值类型在必要时会向上提升为 FLOAT64。
  3. 如果表达式中出现 NULL,任意类型 T 都可以变为 Nullable(T)。
  4. 所有类型都可以向上提升为 VARIANT。
  5. 复杂类型按元素进行强制转换(当 T -> U 时,Array<T> -> Array<U>;元组和映射同理)。

当目标列为 NOT NULL 时,如果数据中可能包含 NULL,请显式转换为 Nullable<T> 或使用 TRY_CAST。

SELECT CONCAT('1', col); -- safe (strings) SELECT CONCAT(1, col); -- may fail if `col` can't coerce to number

NULL 处理与默认值

除非声明为 NOT NULL,否则列允许 NULL 值。当在 INSERT 时省略 NOT NULL 列,TiDB Cloud Lake 会写入该类型对应的默认值:

类型类别默认值
整数型0
浮点型0.0
字符串 / 二进制空字符串 / 空二进制
日期1970-01-01
时间戳1970-01-01 00:00:00
布尔型FALSE

示例:

CREATE TABLE test ( id INT64, name STRING NOT NULL, age INT32 ); INSERT INTO test (id, name, age) VALUES (2, 'Alice', NULL); -- allowed INSERT INTO test (id, name) VALUES (1, 'John'); -- age becomes NULL INSERT INTO test (id, age) VALUES (3, 45); -- name uses default ''

你可以随时使用 DESC test 或 SHOW CREATE TABLE test 查看列的默认值和可空性。

文档内容是否有帮助?