如何在一组二进制序列中找到包含 X 个连续 0 或 1 的序列?



给定一组位序列,找到包含给定数量0的序列的最快方法是什么?是否有位操作/掩码操作我可以使用这个?

细节:

  • 所有的位序列都有相同的长度(287)。
  • 当我说"最快"时我的意思是性能方面,而不是最快的编写/维护。
  • 这些序列实际上将存储在Oracle和SQL Server的单独记录中,这个操作可能会在查询中执行,但我认为我可以实现它,一旦我理解了逻辑。

更多细节:

这是一种在具有性能约束的预订系统中查找可用性的方法。我认为解决方案是将可用性存储为位字符串或由1和0组成的数字,每个位代表5分钟间隔。

当我必须找到一个30分钟的时段时,我需要找到6个连续的0。如果你有更好的主意,我会很有兴趣去探索的。

除了我的咆哮作为评论,看看一个简单的INSTR是否有帮助。第1 - 4行的样本数据(感觉不像输入287位);查询本身从第5行开始。

SQL> with test (id, col) as
2    (select 1, '1011100001101001' from dual union all
3     select 2, '1010101000000110' from dual
4    )
5  select *
6  from test
7  where instr(col, '000000') > 0;
ID COL
---------- ----------------
2 1010101000000110
SQL>

相关内容

最新更新