SQLite数据类型
来源:互联网 发布:声音调节软件 编辑:程序博客网 时间:2024/05/08 04:55
转载: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 之间的关系:
Declared Type Type Affinity Storage Class(按优先级)INT INTERGER (同NUMERIC)CHARTEXT TEXT TEXT/NULL/BLOBBLOB
(不指定) 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:
- 列名表达式 - 该列的 Affinity(见前面第4节表格第2列)
- CAST ... AS ... - 所指定的 Affinity(见前面第4节表格第2列)
- 其他情况 - NONE Affinity
- Step 2:Type Affinity 转换。如果左、右操作数都是下列 3 种 Type Affinity 之一,则按照下列优先顺序,将低优先级的转换为高优先级的:
- 数值类(INTEGER/REAL/NUMERIC)
- TEXT
- NONE
- Step 3:由 Type Affinity 及数据的实际类型,确定其 Storage Class(见前面第4节表格第3列)
- Step 4:如果左、右操作数属于不同的 Storage Class,则按照以下顺序(由小到大)确定比较结果:
- NULL
- 数值类(INTEGER/REAL)
- TEXT
- BLOB
- Step 5:如果左、右操作数属于相同的 Storage Class,则根据以下规则进行比较
- NULL - 左值始终小于右值
- 数值类(INTEGER/REAL)- 按数值比较
- TEXT - 逐字符比较
- BLOB - 用 memcmp() 函数比较
0 0
- SQLite数据类型
- SQLite数据类型
- sqlite 数据类型
- sqlite 数据类型
- sqlite数据类型
- SQLite 数据类型
- sqlite数据类型
- sqlite 数据类型
- sqlite 数据类型
- SQLite数据类型
- sqlite 数据类型
- sqlite数据类型
- sqlite 数据类型
- sqlite 数据类型
- sqlite 数据类型
- sqlite数据类型
- Sqlite 数据类型
- Sqlite数据类型
- 黑马程序员——java学习之面向对象的三大体系
- 第61题 Swap Nodes in Pairs
- eclipese中的发布项目的按钮点击不管用或者 Tomcat中发布的项目不能访问了。
- 我的专栏
- 【git】git与Github初探
- SQLite数据类型
- Android 短信app
- 尚硅谷springmvc总结
- LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- MAC NDK开发环境搭建
- android 中一个项目工程引用另一个项目工程和jar
- Spark框架上DeltaSimRank算法的实现
- OpenLayers 3 之 地图视图(View) 详解
- 耳机插拔流程