加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite数据类型

发布时间:2020-12-12 23:48:00 所属栏目:百科 来源:网络整理
导读:转载:http://www.cnblogs.com/bpasser/archive/2011/11/02/2233455.html 1。严格地说,SQLite 没有数据类型。SQLite 使用动态数据类型,即:数据的类型取决于数据本身,而不是它的容器(字段) 2。存储类型(Storage Class):数据保存到文件后的表现形式。
Declared TypeType AffinityStorage Class(按优先级)INTINTERGER(同NUMERIC)CHAR
TEXTTEXTTEXT/NULL/BLOBBLOB
(不指定)NONE(As is)REAL
FLOAT
DOUBLEREAL(同NUMERIC)(其它)NUMERICINTEGER/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() 函数比较

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

转载:http://www.cnblogs.com/bpasser/archive/2011/11/02/2233455.html

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 之间的关系:

    推荐文章
      热点阅读