下面的Postgres表包含一些示例内容,其中二进制数据存储为可变位(https://www.postgresql.org/docs/10/datatype-bit.html):
ID | Binary data
----------------------
1 | 01110
2 | 0111
3 | 011
4 | 01
5 | 0
6 | 00011
7 | 0001
8 | 000
9 | 00
10 | 0
11 | 110
12 | 11
13 | 1
Q: 是否有任何查询(本地SQL或Postgres函数(返回二进制数据字段等于目标位数组的所有子字符串的所有行。为了更清楚,让我们看看示例搜索值01101:
- 01101->没有结果
- 0110->没有结果
- 011->3
- 01->4
- 0->5、10
返回的结果应包含以下行:3、4、5和10。
编辑:工作查询是(感谢Laurenz Albe(:
SELECT * FROM table WHERE '01101' LIKE (table.binary_data::text || '%')
此外,我发现关于固定大小的Postgres比特与可变比特的讨论很有帮助:PostgreSQL位可变运算符";不能与不同大小的位串"与";
怎么样
WHERE '01101' LIKE (col2::text || '%')
我认为您正在寻找比特和:
where col2 & B'01101' = col2