将此数据库称为员工:
+--+----------------+
|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
字段。或者如果可能的话对表格进行标准化。