【问题标题】:Why doesn't MySQL define a boolean data type?为什么 MySQL 不定义布尔数据类型?
【发布时间】:2011-01-24 08:46:49
【问题描述】:

MySQL 没有定义不同的布尔数据类型,而是选择为 TINYINT(1) 创建 BOOL 和 BOOLEAN 别名。为什么会这样?

【问题讨论】:

    标签: mysql boolean


    【解决方案1】:

    这是因为 SQL 规范直到 SQL:1999 才定义一个,并且没有强制执行。 MySQL 领先于大多数包只是因为允许关键字 - MSSQL、DB2 和 Oracle 使用 BIT 和一些真/假常量来伪造它。

    (基本上是出于同样的原因,尽管 SQL 规范声明它的发音为“ess queue ell”,但我认识的每个人都只是说“sequel”,因为我们很懒且理解上下文。)

    另见:Comparison of different SQL implementations

    【讨论】:

    • 很好的链接。它解释了真正的原因:关于如何处理 NULL 的无休止的讨论。 15 年后,只有 PostgreSQL 真正支持它。对于这种普遍要求的数据类型,这有多疯狂?
    【解决方案2】:

    如果我正确理解您的问题,那是因为 Boolean values in MySql 只是别名为 1 或 0 的常量,并且取决于所使用的基础类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 2022-11-27
      • 1970-01-01
      • 2018-09-24
      • 2012-04-28
      • 2014-01-23
      • 1970-01-01
      • 2019-03-05
      相关资源
      最近更新 更多