对不起我的英语;
SQLite 有 5 个比数据类型更通用的“类存储”:
空值,
整数(1 到 8 个字节),
REAL(8 字节,浮点数),
TEXT(字符串)和
BLOB(或未定义的类型/类)。
其他数据类型是使用定义“关联”的逻辑定义的。此关联用于将任何类型“转换”为仅这 5 个类。
Sqlite 查看列中的数据类型;匹配亲和力;查看通知的值;如有必要,请进行转换,并保存该值。
例如,TINYCHAR 与 TEXT 有亲和性,则保存为 TEXT。
如果您了解逻辑,您将了解数据类型之间的桥梁。
"3,14" 可以保存为 REAL 或 TEXT
当创建 coumun/table 时,SqLite 会在通知数据类型中查找字符串。
如果通知的数据类型中有“INT”(tinyint、smalint、整数或任何带有“INT”的单词),则该值将存储为 INTEGER。如果值为文本(“10”)将转换为数字(10)。
如果数据类型名称中没有“INT”,则Sqlite 将查找“CHAR”、“CLOB”或“TEXT”表达式。如果找到,该值将存储为“TEXT”。如果 Value 是一个数字,将被转换为文本。
如果数据类型名称中没有“INT”、“CHAR”、“CLOB”或“TEXT”,则 Sqlite 将查找“BLOB”表达式。如果找到“BLOB”,则该值将存储为 NONE(未定义类型)。
如果一个列的声明类型包含任何字符串“REAL”、“FLOA”或“DOUB”,那么该列将为REAL
如果上面的任何 teste 为真,将被存储为 NUMERIC(带浮点数的数字)。如果该值为字符串,sqlite 将尝试进行转换。如果是表示整数的整数或字符串,将保存为浮点数。 (在这种情况下有一些优化。
对于日期和时间没有指定类型,字节,有一些函数来处理值。
如果值输入为:
TEXT = 作为 ISO8601 字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
REAL = 作为儒略日数,自公元前 4714 年 11 月 24 日格林威治中午以来的天数。根据预知的公历。
INTEGER = 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。