Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 server TSQL列出较大整数中的所有组成位整数_Sql Server_Tsql_Sql Server 2012_Bitwise Operators - Fatal编程技术网

Sql server TSQL列出较大整数中的所有组成位整数

Sql server TSQL列出较大整数中的所有组成位整数,sql-server,tsql,sql-server-2012,bitwise-operators,Sql Server,Tsql,Sql Server 2012,Bitwise Operators,首先,为没有在这里使用正确的术语表示歉意。我实际上不知道正确的术语,因此很不幸地没有找到解决办法。请接受我的例子作为问题,如果有人能启发我,我会相应地更新问题(或者删除并阅读存在的实际解决方案) 到目前为止,我的研究只对整体中的单个比特进行了比较,而没有显示所有比特 给定一组整数: ELEMENT ----------- Bricks 1 Plaster 2 Cement 4 Concrete 8 我有一个结果集,提供了如何使用这些材料: MIXTURE ELE

首先,为没有在这里使用正确的术语表示歉意。我实际上不知道正确的术语,因此很不幸地没有找到解决办法。请接受我的例子作为问题,如果有人能启发我,我会相应地更新问题(或者删除并阅读存在的实际解决方案)

到目前为止,我的研究只对整体中的单个比特进行了比较,而没有显示所有比特

给定一组整数:

ELEMENT   
-----------
Bricks    1
Plaster   2
Cement    4
Concrete  8
我有一个结果集,提供了如何使用这些材料:

MIXTURE     ELEMENTS
----------------------
MixtureFoo  3
MixtureBar  7
MixtureBaz  11
我需要展示最后一组混合物,但列出了各自混合物中使用的每个组成元素:

MIXTURE     ELEMENTS   ELEMENT
------------------------------
MixtureFoo  3          1
MixtureFoo  3          2
MixtureBar  7          1
MixtureBar  7          2
MixtureBar  7          4
MixtureBaz  11         1
MixtureBaz  11         2
MixtureBaz  11         8

您可以使用位操作:

SELECT *
FROM t
JOIN ELEMENT e
  ON t.ELEMENTS & e.w = e.w
ORDER BY MIXTURE, w;

<强>

我假设你没有实际设计这个数据库,但是如果可能的话,考虑改变设计不要使用位图。除了明显的维护问题(不能有超过64个部分,值需要始终正确构造/解构),正如您所发现的那样,它们也不是很容易查询的问题(通常这种查询也不是很快)。将混合链接到元素的适当中间表允许自然连接(可以明确添加“元素只能出现一次”之类的约束)。是的,发布此问题的原因正是您指定的。迁移已经开始!简直太棒了。非常感谢。