繁体   English   中英

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

[英]How to find the sequences containing X consecutive 0's or 1's in a set of binary sequences?

给定一组位序列,找到包含给定数量 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM