提问人:Joe Platano 提问时间:12/8/2022 最后编辑:Joe Platano 更新时间:12/8/2022 访问量:108
求二键的总和的幂(二的倍数幂)
find power of two key in sum( multiple power of twos)
问:
对于一个 ~ 18 岁的应用程序,用户提交“案例”,每个案例在“日志”表中创建一行,这是一个数据库(在 SQL 2000 上)。这种情况可以用“描述符”进行标记,其中设置了 50 的硬编码限制。描述符/标签存储在查找表中,描述符的键是两个序列 (2^n) 的幂数。
下表如下所示:
钥匙 | 描述符 |
---|---|
1 | D 1 |
2 | E S |
4 | E R的 |
8 | D 4 |
16 | E-T的 |
有 50 行,这意味着最大的键是 562.949.953.421.312。每个案例最多可以有 8 个描述符,不幸的是,这些描述符存储在案例日志表的单个列中。它们的键存储为该情况下所有描述符的摘要。
- 描述符为 D2 的案例在日志中有 2 个
- 描述符 D2 和 D4 的案例有 10 个案例
- 描述符 D1、D3 和 D5 的案例有 21 个
该杂志有 1 亿条记录。现在,这是多年来第一次要求通过描述符来分析期刊。 查询日志并获取一个描述符的结果的智能(数学)方法是什么?
编辑:回答@Squirrel的评论:
jkey的 | jvalue | 描述 符 |
---|---|---|
1 | S T | 0 |
2 | V 2 | 24 |
3 | S V | 3 |
4 | V 4 | 12 |
5 | V 5 | 6 |
答:
3赞
Martin Smith
12/8/2022
#1
您需要使用按位运算符。
假设该列是bigint
where yourcolumn & 16 > 0
将找到匹配的 D5 例如
如果您尝试此查询大于适合有符号 32 位 int 的文本值,请确保顺便将它们强制转换为,因为它们将默认解释为数据类型,不能与按位运算符一起使用。BIGINT
numeric
WHERE yourcolumn & CAST(562949953421312 AS BIGINT) > 0
如果实际上是而不是yourcolumn
numeric
bigint
评论
Journal