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

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

我正在为我面临的这个设计挑战寻找一些提示或技巧:

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

我发现的一个很好的资源是 Adam Machanic 发表的关于这个主题的博客,但在我深入研究之前看看是否还有其他方法。

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

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

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

谢谢。

特拉维斯·惠登

最佳答案

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

不过,它很快就会变得凌乱。

关于sql-server - 带有 varbinary 右侧运算符的 TSQL vbinary 位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8968868/

相关文章:

c# - 在 SQL Server 的 int 数据类型的情况下获取数字精度

sql-server - SQL Server, 'case' 内的 Select 语句

java - 如何在不转换为二进制字符串的情况下计算海明码?

c# - 如何更改字节变量中的每一位

sql - 从离线数据库添加/更新到中央数据库 - Access

sql - SSIS 包中 ReadUncommissed 隔离级别的解决方法

sql - 选择 * 进入失败

sql - 使用 Row_Number 处理非唯一数据

algorithm - 编码并生成 N 以下的唯一数字的固定序列

c# - 手动添加迁移?