IOS应用中关于SQLite 3类型系统

ZhuaWaMi 2011-09-06

IOS应用中关于SQLite 3类型系统是本文要介绍的内容,主要是来了解并学习IOS应用SQLite 的使用方法和技巧,关于SQLite IOS应用的操作本文有很详细的讲解,来看内容。

IOS应用的客户端存储数据一般是存储在SQLite3中,下面简单介绍SQLite支持的数据类型,以及类型间相互关系。大多数数据库使用静态的严格的类型系统,列的类型在创建表的时候就已经指定了。SQLite使用动态的类型系统,列的类型由值决定。

SQLite具有的数据类型

NULL:NULLvalue 

Integer:值是signedinteger类型,大小可以是1,2,3,4,6,8bytes

REAL:浮点类型

TEXT:以UTF-8,UTF-16BEorUTF-16LE编码存储的字符类型

BLOB:二进制数据

其它数据类型说明

Integerprimarykey列是个例外??

布尔类型:SQLite中没有定义布尔类型,而是以Integer存储布尔值,0(false),1(true)

Dateandtime类型

SQLite中也没有定义日期时间类型,日期时间可以用TEXT,REAL,orINTEGER存储

TEXT:存储为字符串("YYYY-MM-DDHH:MM:SS.SSS").

REAL:asJuliandaynumbers,thenumberofdayssincenooninGreenwichonNovember24,4714B.C.accordingtotheprolepticGregoriancalendar.  


 


INTEGER:asUnixTime,thenumberofsecondssince1970-01-0100:00:00UTC. 

SQLiteTypeAffinity(类型检测)

用于自动检测值的类型,以下列举Affinity如何决定类型的规则

(1)如果类型声明中有int,则使用INTEGERaffinity.

(2)如果类型声明中有"CHAR","CLOB",or"TEXT",则使用Textaffinity

(3)如果类型声明中有BLOB或没有指定类型,则使用affinityNONE

(4)如果类型声明中有"REAL","FLOA",or"DOUB",则使用REALaffinity

(5)否则使用Numericaffinity

类型比较NULL

memcmp函数原型

intmemcmp(constvoid*ptr1,constvoid*ptr2,size_tnum); 

比较两个指针指向内存的前num个byte

比较之前的类型转换

l(INTEGER,REALorNUMERIC)和(TEXTorNONE)比较,则TEXT,NONE会被转换成NUMERIC

lTEXT和NONE比较,则NONE会被转换成TEXT

相关推荐

我的剑就是你的剑 / 0评论 2020-02-01