带有字符串列的mysql按位运算

cmp*_*ral 5 mysql string flags bit-manipulation bitwise-operators

我需要在 MySQL 表中存储一些用户记录的标志(我使用的是 InnoDB):

---------------------------
| UserId    | Mask        |
| -------------------------
| 1         | 00000...001 |
| 2         | 00000...010 |
---------------------------
Run Code Online (Sandbox Code Playgroud)

标志的数量大于 64,所以我不能使用 BIGINT 或 BIT 类型来存储值。

我不想使用多对多关联表,因为每个用户可以有多个配置文件,每个配置文件都有自己的一组标志,而且它会很快变大。

所以,我的问题是,是否可以将这些标志存储在 VARCHAR、BLOB 或 TEXT 类型的列中,并且仍然对它们进行按位运算?如果是,如何?

现在我只需要一个操作:给定一个掩码 A,其中 X 位设置为 1,用户至少将那些 X 位设置为 1。

谢谢!

编辑

对于阅读本文的任何人,我已经找到了解决方案(至少对我而言)。我在掩码字段中使用 VARCHAR,在搜索特定掩码时,我使用以下查询:

select * from my_table where mask like '__1__1'
Run Code Online (Sandbox Code Playgroud)

将返回第 3 位和最后一位设置为 on 的每条记录。“_”符号是“任何单个字符”的 SQL 占位符(可能仅限于 mySQL?)。

就速度而言,现在做得很好,当我的用户群增长时必须稍后检查。

无论如何,感谢您的投入。当然,欢迎其他想法。