gpt4 book ai didi

php - MySQL 在 WHERE 语句中按位返回奇数结果

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

我在 MySQL 数据库中有一个 BLOB 字段,它包含一个七位二进制字段 - 本质上,一位代表一周中的每一天,从星期日开始,右边的位。

我有两条记录,一条的二进制字段(称为 Flags)设置为 0101000,另一条设置为 0000010。我在 Mac 上使用 Querious 软件进行数据库工作,这表明该字段确实包含二进制数据并确认上述条目。

但是,当我发出一个 SELECT 语句时,在 WHERE 语句中包含 Flags & 8 = 8,两条记录都被返回,但我认为只有第一个应该是。

使用 bindec($data->flags) & 8 的 PHP 代码只正确地将第一条记录标记为设置了第 4 位(即值 8)。

任何人都可以告诉我我在 MySQL 语句上做错了什么 - 我已经查看它超过 36 个小时了,就是看不到它。

最佳答案

似乎在这里工作正常(在 v5.7.13 上)

mysql> create table z (x bit(7));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into z (x) values (0b0101000), (0b000010);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select cast(x & 8 as unsigned) from z;
+-------------------------+
| cast(x & 8 as unsigned) |
+-------------------------+
| 8 |
| 0 |
+-------------------------+
2 rows in set (0.00 sec)

mysql> select x, cast(x as unsigned) from z where x & 8;
+------+---------------------+
| x | cast(x as unsigned) |
+------+---------------------+
| ( | 40 |
+------+---------------------+
1 row in set (0.00 sec)

您应该显示您的实际查询。

关于php - MySQL 在 WHERE 语句中按位返回奇数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041203/

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