带有varbinary右侧运算符的TSQL vbinary位掩码

时间:2012-01-23 08:33:22

标签: sql-server tsql bit-manipulation bitwise-operators varbinary

我正在寻找一些针对此设计挑战的提示或技巧:

我需要对数据库中存储的两个相同大小的varbinary字段进行位掩码。只是为了澄清,这不是一个“权限表”或任何东西。我会为这些类型的项目规范化数据库,并且这些数据无法规范化。我正在存储varbinary字段,用于动态存储我们的应用程序生成的位。我也在用另一个varbinary查询来搜索这些位。在.net中,我使用BigInteger类型来处理所有的bitmasking并且它做得很好但是我正在考虑将此进程卸载到数据库服务器以在将结果传回给调用者之前过滤结果。现在,我支持varbinary(512)字段类型,并且想要同时执行AND和OR运算符,并且能够比较右侧运算符中的任何(OR)或ALL(AND)位是否成功通过。 MSDN说你可以使用带右手边操作符max bigint的varbinary(),但是我需要超过它。

我找到的一个很好的资源是Adam Machanic关于这个主题的博客,但是在我深入研究之前,他们正在寻找其他方法。

http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/bitmask-handling-part-3-logical-operators.aspx

这适用于SQL 2005或更高版本。如果2008年有一个2005年没有找到的功能,我会很好,我还没有找到一个。

非常感谢任何提示或技巧。

感谢。

Travis Whidden

1 个答案:

答案 0 :(得分:0)

如果您知道位图的最大长度,则可以将其分布在多个列上并单独屏蔽它们。

虽然它很快就会变得凌乱。