我得到了名为multitypes(int)的sql表和列。
多类型列值是常规数字。我需要将这些数字分解为2个收藏品的幂,然后检查过滤值是否是这些收藏品之一。
如何正确构建我的WHERE语句?
例子:
列具有值:
10 which is (8+2),
25 which is (16+8+1),
17 which is (16+1),
101 which is (64+32+4+1)
我想建立查询
SELECT * FROM TABLE
WHERE @FilterValue -???-> MultiTypes
-是吗???->means-@filtervalue是迭代值的“2次幂”集合之一
如果filter value是8,我将得到多类型值为10和25的行
如果filter value为1,我将得到具有多类型值17、101和25的行
最佳答案
如果要知道筛选器值是否与“1”位置的位数组匹配,请使用按位和。看起来像:
where MultiType_Column & @filter = @filter
不需要将值分解为特定类型。
如果要知道是否设置了任何值,则可以使用:
where MultiType_Column & @filter <> 0
关于sql - 如何撰写T-SQL WHERE语句,以确定特定的过滤器值是否为从列值可收集的2的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57739533/