乐闻世界logo
搜索文章和话题

SQLite 支持哪些数据类型?

2月18日 21:29

SQLite 支持多种数据类型,采用动态类型系统:

  1. 存储类(Storage Classes)

    • NULL:空值
    • INTEGER:有符号整数,根据值大小自动选择 1、2、3、4、6 或 8 字节存储
    • REAL:浮点数,8 字节 IEEE 浮点数
    • TEXT:字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储
    • BLOB:二进制大对象,完全按照输入存储
  2. 类型亲和性(Type Affinity) SQLite 使用类型亲和性来处理数据类型,而不是严格的类型检查:

    • TEXT:用于存储字符串,使用 TEXT 存储类
    • NUMERIC:可能包含整数或浮点数的值,转换为 INTEGER 或 REAL
    • INTEGER:与 NUMERIC 类似,但优先转换为 INTEGER
    • REAL:与 NUMERIC 类似,但优先转换为 REAL
    • NONE:不进行类型转换
  3. 动态类型特点

    • 可以在同一列中存储不同类型的数据
    • 插入数据时,SQLite 会根据值的类型和列的类型亲和性选择合适的存储类
    • 查询时可以动态转换数据类型
  4. 类型转换规则

    • 当向具有 INTEGER 亲和性的列插入文本时,SQLite 会尝试将其转换为整数
    • 当向具有 REAL 亲和性的列插入整数时,会转换为浮点数
    • 如果转换失败,则存储原始值

这种灵活的类型系统使得 SQLite 能够适应各种应用场景,但也要求开发者更加注意数据类型的一致性。

标签:Sqlite