sql-server - 我可以在 Sql Server 中对一组数字执行按位和运算吗?

标签 sql-server tsql

我有一个安全表,其中包含一组组和用户,每个组和用户都有按位整数权限。对于每个给定的用户,我想对他们的所有组和他们的个人权限记录(如果存在)执行按位 AND。

当然,我可以在我的代码中轻松执行此操作,但我宁愿在数据库中执行此操作,因为可能有数千个项目我正在查询权限。

与游标相比,我更喜欢基于集合的解决方案。

请注意,我无法控制架构。

最佳答案

如果您想要按位或单位值的所有值,则可以使用基于集合的解决方案:Performing a bitwise sum

或者,您可以使用不太优雅的方法对非唯一值集进行基于模糊集合的位运算:

DECLARE @BitSum INT
SET @BitSum = 0
SELECT @BitSum = @BitSum | BitValue
FROM (
    SELECT 1 AS BitValue
    UNION SELECT 7
    UNION SELECT 16
) AS SampleValues
SELECT @BitSum

编辑:Hugo Kornelis 在另一篇文章中非常全面地回答了这个问题:http://www.eggheadcafe.com/software/aspnet/33139293/bitwise-aggregate-function.aspx

关于sql-server - 我可以在 Sql Server 中对一组数字执行按位和运算吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895174/

相关文章:

sql - 寻找练习来学习 SQL,使用 Northwind 数据库

sql - 是否可以在不使用游标的情况下对集合执行存储过程?

sql - 在 SQL Server 中使用表变量

sql-server - 一个 BEGIN ... END block 内有多个语句

sql - 在索引范围扫描的情况下,整数列索引是否比字符串列索引更快?

SQL服务器触发器

sql - 如何在输入参数中的第二个哈希后获取值

sql-server - 由于列数较多,Sqoop 导出到 SQL Server 失败/挂起

重负载下SQL Server检索错误(200并发用户)

sql-server - 编译为 t-sql 的语言