【问题标题】:sqlite & mysql field types?sqlite 和 mysql 字段类型?
【发布时间】:2011-01-09 04:26:36
【问题描述】:

您好,我正在做我的第一个 sqlite 项目,我只是想知道 sqlite 是否支持所有与 MYsql 相同的字段类型,例如 - DATETIME、TINYINT、VARCHAR 等。

如果 sqlite 支持有限的字段类型,如果有人可以提供给我,那将是一个很大的帮助。

谢谢!

【问题讨论】:

标签: mysql sqlite


【解决方案1】:

对不起我的英语;

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 以来的秒数。

【讨论】:

  • 作者询问支持的数据类型,而不是他们的行为。您的回答没有回答问题。
  • 我有一个表用于链接 MySQL 和 Sqlite 之间的数据类型
【解决方案2】:

旧线程,但我认为发帖人要求在 mySQL 和 SQLite 数据类型之间建立映射。由于这篇文章在我搜索时在 Google 上排名很高,所以我找到了一个链接,它更具体地回答了发帖者的问题 (YMMV):

http://drupal.org/node/159605

【讨论】:

    【解决方案3】:

    sqlite 的数据类型数量非常有限。根据Documentation,它有以下5种数据类型:

    • 。该值为 NULL 值。
    • 整数。该值是一个有符号整数,根据值的大小存储在 1、2、3、4、6 或 8 个字节中。
    • 真实。该值是一个浮点值,存储为一个 8 字节的 IEEE 浮点数。
    • 文本。该值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
    • BLOB。该值是一团数据,完全按照输入的方式存储。

    所以回答你的问题,不,sqlite 和 mysql 没有相同的数据类型。

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      相关资源
      最近更新 更多