我有表:
+----------------+--------------+
| name (varchar) | flags (text) |
+----------------+--------------+
| A | 100001000000 |
| B | 100001000000 |
| C | 000001000000 |
| D | 000001000000 |
+----------------+--------------+
Flags
将超过 64 位的二进制值存储为 TEXT。
我想要做:
SELECT name, conv(flags, 2, 2) & conv('100000000001', 2, 2) FROM users;
哪个应该返回:
+----------------+--------------+
| name (varchar) | flags (text) |
+----------------+--------------+
| A | 1 |
| B | 1 |
| C | 0 |
| D | 0 |
+----------------+--------------+
但是当flag > 2^64-1
我得到总是1
因为conv
总是返回2^64-1
我该如何解决这个问题?