gpt4 book ai didi

Mysql Bit(1) 列返回 00000000 而不是 0

转载 作者:行者123 更新时间:2023-11-29 06:34:19 29 4
gpt4 key购买 nike

我使用以下命令创建了一个 MySQL 表:

CREATE TABLE wp_brgpaypal (
id mediumint(9) AUTO_INCREMENT primary key NOT NULL,
user_id mediumint NOT NULL,
month tinyint NOT NULL,
year tinyint NOT NULL,
students smallint NOT NULL,
rating tinyint NOT NULL,
comission DECIMAL(7,2) NOT NULL,
paid BIT(1) NOT NULL,
)

但是当我在付费列中插入值 0 时,它会记录 00000000。它不应该只记录 0 吗?

最佳答案

不,不一定。我认为大多数 MySQL 存储引擎都会为 BIT(1) 保留一个完整的存储字节。

存储的位数向上取整为 8 的倍数。BIT(1) 占用的存储量与 BIT(8) 相同。 (一些存储引擎可能会组合多个 BIT(n) 列。)

您如何确定 MySQL“记录 00000000”?

BIT(1) 列的返回内容及其显示方式实际上是客户端问题,而不是数据库存储问题。一些客户端会将其显示为 b'0'。但这不是 MySQL 服务器强制要求的。

注意:如果您想从 BIT(1) 列的内容中返回 01 的整数值,一个“技巧”是使用添加整数零的表达式,例如

  SELECT paid+0 AS paid FROM wp_brgpaypal LIMIT 1
^^^^^^

但这并不是真正返回 BIT(1) 数据类型;这是返回一个整数值(作为表达式的结果。这并没有解决 MySQL 在 BIT(1) 列中“记录”的内容。


在相关说明中,您不清楚为什么要使用 BIT(1) 数据类型。您打算表示一个 bool 值 TRUE/FALSE 值吗?逻辑 bool 值和数据库存储之间存在多种“映射”。

最常见的(我经常使用的)之一是

TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'boolean'

我们将零值 (0) 视为 FALSE,将任何其他非空值视为 TRUE。 (我们存储一个 1 表示 TRUE,但是我们解码列值的方式,除 0 之外的任何非空值都表示 TRUE

关于Mysql Bit(1) 列返回 00000000 而不是 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899606/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com