开发者

SQL Server - Finding bitwise OR values using query

开发者 https://www.devze.com 2023-04-11 19:13 出处:网络
I have a business requirement to search through a database table where one of the columns is a bitwise integer and remove the base values from a table.

I have a business requirement to search through a database table where one of the columns is a bitwise integer and remove the base values from a table.

For example, assume my table/resultset looks like this currently:

Value
-----
1
2
16
32
33

Notice that 33 is present, which is 开发者_如何学运维also 32 | 1. What I need to do is remove the 1 and 32 values to return this:

Value
-----
2
16
33

Obviously I could do this with looping constructs in SQL - or even in my business logic in C# - but I'm wondering whether this is at all possible using a query?


Here's a query that ought to work.

DELETE myTable WHERE myTable.Value in
(SELECT T1.Value
FROM myTable T1
CROSS JOIN myTable T2
WHERE T1.Value<>T2.Value AND T1.Value<T2.Value AND ((T1.Value | T2.VALUE)=T2.Value))


Try:

with cte(Value) as (
    select 1 as Value
    union all
    select 2
    union all
    select 16
    union all
    select 32
    union all
    select 33
)

--select values to be removed
select x1.Value
from cte x1
inner join cte x2 on x1.Value <> x2.Value 
inner join cte x3 on x1.Value <> x3.Value and x2.Value <> x3.Value
where x1.Value | x2.Value = x3.Value
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号