【问题标题】:Can I have negative tinyint in SQLite?我可以在 SQLite 中使用负 tinyint 吗?
【发布时间】:2010-12-03 07:51:55
【问题描述】:

我需要创建一个包含“-1”或“+1”列的表(在 SQLite 中)。为了节省内存,最好不要使用“int”作为列的类型。所以,我想到了“smallint”和“tinyint”。但是 smallint 并不是那么小(从 -32,768 到 32,767),并且 tinyint 只能是正数(从 0 到 255)。有没有其他选项或者我在这些 twp 之间进行了选择?

提前谢谢你。

【问题讨论】:

  • 您实际上是从哪里获取这些信息的?

标签: sql mysql sqlite types


【解决方案1】:

SQLite 3 仅提供 INTEGER 数据类型...

[...] 是有符号的 整数,存储在 1、2、3、4、6 或 8 中 字节取决于大小 价值。

来源:http://www.sqlite.org/datatype3.html

【讨论】:

  • 嗯,它是 SQLite,但他们应该将这种数据类型称为正整数或序数 因为 -1 对我来说似乎是一个非常好的“整数”。
  • @parvium,上面写着有符号整数。
  • @pavium: "有符号整数" 表示它可以是正数也可以是负数,你可以认为它有一个 + 符号 或 - 符号 就可以了。
【解决方案2】:

我建议您按照其他答案的建议使用 0/1 或一点,但如果您真的需要这样做,您能否在代码中将值从无符号字节转换为字符,然后到有符号字节?如果可以,然后 1 (00000001) 转换为 1,255 (11111111) 转换为 -1

【讨论】:

    【解决方案3】:

    Boolean 会在应用程序中进行微小的处理,将 boolean 映射到 -1 或 +1。

    【讨论】:

    • 为什么不直接存储整数呢?它将被存储为一个 1 字节的有符号整数。 sqlite 中没有原生的布尔类型。 (请参阅 Ionut G. Stan 的答案中的链接。)无论如何,布尔值只会存储为整数。
    【解决方案4】:

    如果你的字段只能有两个值,为什么不使用位/布尔值?

    【讨论】:

      猜你喜欢
      • 2015-01-11
      • 2015-05-21
      • 2019-01-06
      • 2020-11-07
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2022-06-29
      相关资源
      最近更新 更多