布尔类型 ============= OushuDB 提供标准的SQL类型\ ``boolean``\ ,参见 \ `表 `__\ 。\ ``boolean``\ 可以有多个状态:“true(真)”、“false(假)”和第三种状态“unknown(未知)”,未知状态由SQL空值表示。 .. container:: table :name: DATATYPE-BOOLEAN-TABLE **表 布尔数据类型** .. container:: table-contents =========== ======== ============ 名字 存储字节 描述 =========== ======== ============ ``boolean`` 1字节 状态为真或假 =========== ======== ============ 在SQL查询中,布尔常量可以表示为SQL关键字\ ``TRUE``, ``FALSE``,和 ``NULL``. ``boolean`` 类型的数据类型输入函数接受这些字符串表示“真”状态: +----------+ | ``true`` | +----------+ | ``yes`` | +----------+ | ``on`` | +----------+ | ``1`` | +----------+ 下面这些表示“假” 状态: +-----------+ | ``false`` | +-----------+ | ``no`` | +-----------+ | ``off`` | +-----------+ | ``0`` | +-----------+ 这些字符串的唯一前缀也可以接受,例如\ ``t`` 或 ``n``. 前端或尾部的空格将被忽略,并且大小写不敏感。 ``boolean``\ 类型的数据类型输出函数总是发出 ``t`` 或 ``f``\ ,如 \ `例 `__\ 所示。 .. container:: example :name: DATATYPE-BOOLEAN-EXAMPLE **例 使用 \ boolean \ 类型** .. container:: example-contents .. code:: programlisting CREATE TABLE test1 (a boolean, b text); INSERT INTO test1 VALUES (TRUE, 'sic est'); INSERT INTO test1 VALUES (FALSE, 'non est'); SELECT * FROM test1; a | b ---+--------- t | sic est f | non est SELECT * FROM test1 WHERE a; a | b ---+--------- t | sic est 在SQL查询中优先使用关键字\ ``TRUE`` 和 ``FALSE``\ 来写布尔常数(SQL-兼容)。 但是你也可以使用遵循 \ `节 `__\ 中描述的通用字符串文字常量句法的字符串来表达,例如\ ``'yes'::boolean``. 注意语法分析程序会把\ ``TRUE`` 和 ``FALSE`` 自动理解为\ ``boolean``\ 类型,但是不包括\ ``NULL`` ,因为它可以是任何类型的。 因此在某些语境中你也许要将 ``NULL`` 转化为显示\ ``boolean``\ 类型,例如\ ``NULL::boolean``. 反过来,上下文中的字符串文字布尔值也可以不转换,当语法分析程序能够断定文字必定为\ ``boolean``\ 类型时。