zoukankan      html  css  js  c++  java
  • SQLite 数据类型总结

    SQLite 数据类型总结

    1。严格地说,SQLite 没有数据类型。SQLite 使用动态数据类型,即:数据的类型取决于数据本身,而不是它的容器(字段)

    2。存储类型(Storage Class):数据保存到文件后的表现形式。包括:

    • NULL - 空值
    • INTERGER - 有符号整数类型
    • REAL - 浮点数类型
    • TEXT - 字符串(其编码取决于DB的编码)
    • BLOB - 二进制表示

    3。亲和类型(Type Affinity):数据表的列中的数据对Storage Class的倾向性

    •  TEXT
    • NUMERIC
    • INTEGER
    • REAL
    • NONE

    4。声明类型(Declared Type):CREATE TABLE/ALTER TABLE 语句中声明的列的类型

    Declared Type、Type Affinity、Storage Class 之间的关系:

     Declared Type  Type Affinity  Storage Class(按优先级)
    INT  INTERGER  (同NUMERIC)
    CHAR
    TEXT
     TEXT  TEXT/NULL/BLOB
    BLOB
    (不指定)
     NONE  (As is)
    REAL
    FLOAT
    DOUBLE
     REAL  (同NUMERIC)
    (其它)  NUMERIC  INTEGER/REAL/TEXT/NULL/BLOB

     例外:

    (1)BLOB 数据始终保存为 BLOB 的 Storage Class

     

    5。数据的比较。比较操作符(=,>,>=...)、IN、Sort by等,按照以下5个步骤比较左右操作数:

    • Step 1:根据下列规则确定左右操作数的 Type Affinity:
    1. 列名表达式 - 该列的 Affinity(见前面第4节表格第2列)
    2. CAST ... AS ... - 所指定的 Affinity(见前面第4节表格第2列)
    3. 其他情况 - NONE Affinity
    • Step 2:Type Affinity 转换。如果左、右操作数都是下列 3 种 Type Affinity 之一,则按照下列优先顺序,将低优先级的转换为高优先级的:
    1. 数值类(INTEGER/REAL/NUMERIC)
    2. TEXT
    3. NONE
    • Step 3:由 Type Affinity 及数据的实际类型,确定其 Storage Class(见前面第4节表格第3列)
    • Step 4:如果左、右操作数属于不同的 Storage Class,则按照以下顺序(由小到大)确定比较结果:
    1. NULL
    2. 数值类(INTEGER/REAL)
    3. TEXT
    4. BLOB
    • Step 5:如果左、右操作数属于相同的 Storage Class,则根据以下规则进行比较
      1. NULL - 左值始终小于右值
      2. 数值类(INTEGER/REAL)- 按数值比较
      3. TEXT - 逐字符比较
      4. BLOB - 用 memcmp() 函数比较
  • 相关阅读:
    全网通5X_AL10 非定制版 固件汇总
    system.new.dat解压工具sdat2img
    linux 平台中 Android5.0的更新包中system.new.dat文件的解包
    【 henuacm2016级暑期训练-动态规划专题 A 】Cards
    【BZOJ 1486】 [HNOI2009]最小圈
    【BZOJ 1433】[ZJOI2009]假期的宿舍
    【BZOJ 1412】[ZJOI2009]狼和羊的故事
    【BZOJ 1305】[CQOI2009]dance跳舞
    【Codeforces Round #483 (Div. 2) C】Finite or not?
    【Codeforces Round #482 (Div. 2) C】Kuro and Walking Route
  • 原文地址:https://www.cnblogs.com/oakentree/p/4534440.html
Copyright © 2011-2022 走看看