Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在位掩码中查找索引_Sql_Sqlite_Binary - Fatal编程技术网

Sql 在位掩码中查找索引

Sql 在位掩码中查找索引,sql,sqlite,binary,Sql,Sqlite,Binary,Halo双星专家们 我有一个表示房间选项的位掩码,比如11001(Opt#1,4,5) 另一个用户试图用自己的位掩码进行搜索(比如111000(Opt#4,5,6) 执行(Room | Search)!=0意味着它会比较掩码,并查看是否有相同的开关打开(在本例中为4) 问题是,开关#4是房间的第二个“活动”开关,也是第一个“搜索”开关。 我需要用户也发现#4是房间的第二个开关 用户有单独的位掩码进行检查。 房间和用户只能打开3个开关 我的方法可以知道最后一个(最大)索引,例如使用UserMask

Halo双星专家们

我有一个表示房间选项的位掩码,比如
11001(Opt#1,4,5)
另一个用户试图用自己的位掩码进行搜索(比如
111000(Opt#4,5,6)
执行
(Room | Search)!=0
意味着它会比较掩码,并查看是否有相同的开关打开(在本例中为4) 问题是,开关#4是房间的第二个“活动”开关,也是第一个“搜索”开关。 我需要用户也发现#4是房间的第二个开关

用户有单独的位掩码进行检查。 房间和用户只能打开3个开关

我的方法可以知道最后一个(最大)索引,例如使用UserMask2(第三个选项):

if(A
UserMask2是第三个开关,因为UserMask2的负ing使其低于UserMask2

这只会发现某个用户掩码确实位于RoomMask的最大位上

但我不知道如何继续

这是用于使用Photon进行匹配搜索的,Photon使用SQL,我可能必须通过一个WHERE查询来实现这一点(不确定它是否可以存储变量)

我希望我足够清楚
干杯!

你的问题不是很清楚,因此我不是100%认为这个答案就是你想要的。不过,你还是有

您可以使用
like
键搜索列的内容,其中有两个通配符:

  • %
    表示任何东西
  • 表示任何字符
现在,假设您希望在一个由10个可能的开关组成的映射中找到开关1、4和7的匹配项(在本例中,开关1是最左边的),您可以使用以下子句:

WHERE Bitmap like '1__1__1___`

当然,这只是一个示例,您需要根据您的具体环境对其进行调整。

请提供预期的输出。因此,当用户使用其个人搜索掩码检查RoomMask时:FindBitIndex(RoomMask,SearchMask1)=11001,1000=2 FindBitIndex(RoomMask,SearchMask2)=11001,10000=3 FindBitIndex(RoomMask,SearchMask1)=11001,100000=无效(因为RoomMask不包含100000)
WHERE Bitmap like '1__1__1___`