gpt4 book ai didi

mysql - 在mysql中存储和匹配二进制数据

转载 作者:行者123 更新时间:2023-11-29 01:02:16 26 4
gpt4 key购买 nike

我正在尝试在数据库中存储不同的多个选择字段状态。所以一个选择列表是:

<option value="1">a1</option>
<option value="2">a2</option>
<option value="4">a3</option>
<option value="8">a4</option>

我想在没有第二个(规范化的)表的情况下尝试这个。所以我想出了添加选项值并将它们保存在数据库中。这样我就可以读出它们,转换它们并搜索 2 值的幂。

问题是在数据库中搜索时。假设有人搜索 a1。那将是 1,但也是 3,因为它是 a1 和 a2 的组合。

所以这有点令人困惑。现在我试图存储二进制值,比如 101 并根据它处理十进制值。搜索 a1 或 a2 时,我必须搜索(二进制)1 和 11。我不知道如何匹配它,我相信有更好的方法,对吧?

最佳答案

您正在使用所谓的 bit-field ;这意味着您必须使用按位运算符/函数来处理您的数据。

参见 11.11.1. Bit Functions .

例如,要选择设置了“1”位的行,您必须使用如下内容:

select *
from your_table
where (your_field & 1) = 1

要测试 thirg 位 (即对应于值 4 的位,即 1<<2 ),您将使用:

select *
from your_table
where (your_field & 1<<2) = 1


作为旁注:当使用这种计算时,MySQL 将不得不进行全面扫描(即遍历表中的每一行) 以找到符合条件的那些...可能不符合条件非常适合表演,如果你有很多台词。


并且,作为一个快速演示:

mysql> select (4 & 1<<2);
+------------+
| (4 & 1<<2) |
+------------+
| 4 |
+------------+

mysql> select (3 & 1<<2);
+------------+
| (3 & 1<<2) |
+------------+
| 0 |
+------------+

关于mysql - 在mysql中存储和匹配二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2325766/

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