将此数据库称为员工:

+--+----------------+
|ID|Ability_required|
+--+----------------+
|1 |   0000000111   |
|2 |   0000001111   |
|3 |   0000000111   |
|4 |   0000001101   |
|5 |   0000001111   |
+--+----------------+

这个 SQL 查询:
SELECT ID FROM `Employees`
WHERE `Ability_required` & b'0000001111' = b'0000001111'

为什么我的 MYSQL 返回行号 1 和 3?我在这里做错了什么?

检查图像的示例:

最佳答案

您将数字存储为字符串,而 bitwise and 对整数进行操作。 MySQL 将执行隐式转换,但是,它假定字符串表示十进制数。

使用 MySQL CONV 函数手动转换字符串:

SELECT * FROM `Employees`
WHERE CONV(`Ability_required`, 2, 10) & b'0000001111' = b'0000001111';

ID Ability_required
2  0000001111
5  0000001111

我建议使用 INT 字段。或者如果可能的话对表格进行标准化。

10-08 08:25