Bitwise AND operator


1. Get Active Categories

SQL Server Query 1

            
-- Bit 1: 1 = Active, 0 = Inactive  
-- Bit 2: 1 = Seasonal, 0 = Non-seasonal
-- Bit 3: 1 = Featured, 0 = Not featured
-- 1. Get Active Categories
SELECT Categories.CategoryID, Categories.CategoryName
FROM Categories, (VALUES
(1, 3), -- 1 = CategoryID, 3 = BitFlag: Active and Seasonal (1 | 2 = 3)
(2, 5), -- 2 = CategoryID, 5 = BitFlag: Active and Featured (1 | 4 = 5)
(3, 0) -- 3 = CategoryID, 0 = BitFlag: Inactive and Nonseasonal and Not Feature
) AS CategoryFeature (CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID AND
(CategoryFeature.BitFlag & 1) = 1; -- Bitwise AND with 1 (0001)

Create SQL query with SqlQueryBuilder 1

            
var (sql1, parameters1) = new SqlQueryBuilder()  
.Select()
.Columns("Categories.CategoryID", "Categories.CategoryName")
.From(new Table("Categories"), new VALUES(new List<List<object>>()
{
new List<object>() {1, 3 },
new List<object>() {2, 5 },
new List<object>() {3, 0 },
}, "CategoryFeature", "CategoryID", "BitFlag"))
.Where(new Where(new Column("Categories.CategoryID").Equale(new Column("CategoryFeature.CategoryID")))
.AND(new ColumnArithmatic().StartBracket("CategoryFeature.BitFlag").BitwiseAND(1).EndBracket().Equale(1))
)
.Build();

Query build by SqlQueryBuilder 1

            
SELECT Categories.CategoryID,
       Categories.CategoryName
FROM Categories, (VALUES (@pMAIN_2507192004522145030, @pMAIN_2507192004522145031), (@pMAIN_2507192004522145032, @pMAIN_2507192004522145033), (@pMAIN_2507192004522145034, @pMAIN_2507192004522145035)) AS CategoryFeature(CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID
      AND (CategoryFeature.BitFlag & @pMAIN_2507192004522145036) = @pMAIN_2507192004522145037;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192004522145030 1
@pMAIN_2507192004522145031 3
@pMAIN_2507192004522145032 2
@pMAIN_2507192004522145033 5
@pMAIN_2507192004522145034 3
@pMAIN_2507192004522145035 0
@pMAIN_2507192004522145036 1
@pMAIN_2507192004522145037 1

Query Results 1:

  CategoryID CategoryName
1 1 Beverages
2 2 Condiments


2. Get Seasonal Categories

SQL Server Query 2

            
-- Bit 1: 1 = Active, 0 = Inactive  
-- Bit 2: 1 = Seasonal, 0 = Non-seasonal
-- Bit 3: 1 = Featured, 0 = Not featured
-- 2. Get Seasonal Categories
SELECT Categories.CategoryID, Categories.CategoryName
FROM Categories, (VALUES
(1, 3), -- 1 = CategoryID, 3 = BitFlag: Active and Seasonal (1 | 2 = 3)
(2, 5), -- 2 = CategoryID, 5 = BitFlag: Active and Featured (1 | 4 = 5)
(3, 0) -- 3 = CategoryID, 0 = BitFlag: Inactive and Nonseasonal and Not Feature
) AS CategoryFeature (CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID AND (CategoryFeature.BitFlag & 2) = 2; -- Bitwise AND with 2 (0010)

Create SQL query with SqlQueryBuilder 2

            
var (sql2, parameters2) = new SqlQueryBuilder()  
.Select()
.Columns("Categories.CategoryID", "Categories.CategoryName")
.From(new Table("Categories"), new VALUES(new List<List<object>>()
{
new List<object>() {1, 3 },
new List<object>() {2, 5 },
new List<object>() {3, 0 },
}, "CategoryFeature", "CategoryID", "BitFlag"))
.Where(new Where(new Column("Categories.CategoryID").Equale(new Column("CategoryFeature.CategoryID")))
.AND(new ColumnArithmatic().StartBracket("CategoryFeature.BitFlag").BitwiseAND(2).EndBracket().Equale(2))
)
.Build();

Query build by SqlQueryBuilder 2

            
SELECT Categories.CategoryID,
       Categories.CategoryName
FROM Categories, (VALUES (@pMAIN_2507192004527627090, @pMAIN_2507192004527627091), (@pMAIN_2507192004527627092, @pMAIN_2507192004527627093), (@pMAIN_2507192004527627094, @pMAIN_2507192004527627095)) AS CategoryFeature(CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID
      AND (CategoryFeature.BitFlag & @pMAIN_2507192004527627096) = @pMAIN_2507192004527627097;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192004527627090 1
@pMAIN_2507192004527627091 3
@pMAIN_2507192004527627092 2
@pMAIN_2507192004527627093 5
@pMAIN_2507192004527627094 3
@pMAIN_2507192004527627095 0
@pMAIN_2507192004527627096 2
@pMAIN_2507192004527627097 2

Query Results 2:

  CategoryID CategoryName
1 1 Beverages


3. Get Featured Categories

SQL Server Query 3

            
-- Bit 1: 1 = Active, 0 = Inactive  
-- Bit 2: 1 = Seasonal, 0 = Non-seasonal
-- Bit 3: 1 = Featured, 0 = Not featured
-- 3. Get Featured Categories
SELECT Categories.CategoryID, Categories.CategoryName
FROM Categories, (VALUES
(1, 3), -- 1 = CategoryID, 3 = BitFlag: Active and Seasonal (1 | 2 = 3)
(2, 5), -- 2 = CategoryID, 5 = BitFlag: Active and Featured (1 | 4 = 5)
(3, 0) -- 3 = CategoryID, 0 = BitFlag: Inactive and Nonseasonal and Not Feature
) AS CategoryFeature (CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID AND (CategoryFeature.BitFlag & 4) = 4; -- Bitwise AND with 4 (0100)

Create SQL query with SqlQueryBuilder 3

            
var (sql3, parameters3) = new SqlQueryBuilder()  
.Select()
.Columns("Categories.CategoryID", "Categories.CategoryName")
.From(new Table("Categories"), new VALUES(new List<List<object>>()
{
new List<object>() {1, 3 },
new List<object>() {2, 5 },
new List<object>() {3, 0 },
}, "CategoryFeature", "CategoryID", "BitFlag"))
.Where(new Where(new Column("Categories.CategoryID").Equale(new Column("CategoryFeature.CategoryID")))
.AND(new ColumnArithmatic().StartBracket("CategoryFeature.BitFlag").BitwiseAND(4).EndBracket().Equale(4))
)
.Build();

Query build by SqlQueryBuilder 3

            
SELECT Categories.CategoryID,
       Categories.CategoryName
FROM Categories, (VALUES (@pMAIN_2507192004527735480, @pMAIN_2507192004527735481), (@pMAIN_2507192004527735482, @pMAIN_2507192004527735483), (@pMAIN_2507192004527735484, @pMAIN_2507192004527735485)) AS CategoryFeature(CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID
      AND (CategoryFeature.BitFlag & @pMAIN_2507192004527735486) = @pMAIN_2507192004527735487;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192004527735480 1
@pMAIN_2507192004527735481 3
@pMAIN_2507192004527735482 2
@pMAIN_2507192004527735483 5
@pMAIN_2507192004527735484 3
@pMAIN_2507192004527735485 0
@pMAIN_2507192004527735486 4
@pMAIN_2507192004527735487 4

Query Results 3:

  CategoryID CategoryName
1 2 Condiments


4. Get Categories that are either Active or Featured

SQL Server Query 4

            
-- Bit 1: 1 = Active, 0 = Inactive  
-- Bit 2: 1 = Seasonal, 0 = Non-seasonal
-- Bit 3: 1 = Featured, 0 = Not featured
-- 3. Get Featured Categories
SELECT Categories.CategoryID, Categories.CategoryName
FROM Categories, (VALUES
(1, 3), -- 1 = CategoryID, 3 = BitFlag: Active and Seasonal (1 | 2 = 3)
(2, 5), -- 2 = CategoryID, 5 = BitFlag: Active and Featured (1 | 4 = 5)
(3, 0) -- 3 = CategoryID, 0 = BitFlag: Inactive and Nonseasonal and Not Feature
) AS CategoryFeature (CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID AND (CategoryFeature.BitFlag & (1 | 4 )) > 0; -- Bitwise AND with (1 OR 4) = 5 (0101)

Create SQL query with SqlQueryBuilder 4

            
var (sql4, parameters4) = new SqlQueryBuilder()  
.Select()
.Columns("Categories.CategoryID", "Categories.CategoryName")
.From(new Table("Categories"), new VALUES(new List<List<object>>()
{
new List<object>() {1, 3 },
new List<object>() {2, 5 },
new List<object>() {3, 0 },
}, "CategoryFeature", "CategoryID", "BitFlag"))
.Where(new Where(new Column("Categories.CategoryID").Equale(new Column("CategoryFeature.CategoryID")))
.AND(new ColumnArithmatic().StartBracket("CategoryFeature.BitFlag").BitwiseAND()
.StartBracket().Value(1).BitwiseOR(4).EndBracket()
.EndBracket().GreaterThan(0))
)
.Build();

Query build by SqlQueryBuilder 4

            
SELECT Categories.CategoryID,
       Categories.CategoryName
FROM Categories, (VALUES (@pMAIN_2507192004527795640, @pMAIN_2507192004527795641), (@pMAIN_2507192004527795642, @pMAIN_2507192004527795643), (@pMAIN_2507192004527795644, @pMAIN_2507192004527795645)) AS CategoryFeature(CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID
      AND (CategoryFeature.BitFlag & (@pMAIN_2507192004527795646 | @pMAIN_2507192004527795647)) > @pMAIN_2507192004527795648;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192004527795640 1
@pMAIN_2507192004527795641 3
@pMAIN_2507192004527795642 2
@pMAIN_2507192004527795643 5
@pMAIN_2507192004527795644 3
@pMAIN_2507192004527795645 0
@pMAIN_2507192004527795646 1
@pMAIN_2507192004527795647 4
@pMAIN_2507192004527795648 0

Query Results 4:

  CategoryID CategoryName
1 1 Beverages
2 2 Condiments


5. Get Categories that are Active AND Seasonal

SQL Server Query 5

            
-- Bit 1: 1 = Active, 0 = Inactive  
-- Bit 2: 1 = Seasonal, 0 = Non-seasonal
-- Bit 3: 1 = Featured, 0 = Not featured
-- 3. Get Featured Categories
SELECT Categories.CategoryID, Categories.CategoryName
FROM Categories, (VALUES
(1, 3), -- 1 = CategoryID, 3 = BitFlag: Active and Seasonal (1 | 2 = 3)
(2, 5), -- 2 = CategoryID, 5 = BitFlag: Active and Featured (1 | 4 = 5)
(3, 0) -- 3 = CategoryID, 0 = BitFlag: Inactive and Nonseasonal and Not Feature
) AS CategoryFeature (CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID AND (CategoryFeature.BitFlag & (1 | 2 )) = (1 | 2);

Create SQL query with SqlQueryBuilder 5

            
var (sql5, parameters5) = new SqlQueryBuilder()  
.Select()
.Columns("Categories.CategoryID", "Categories.CategoryName")
.From(new Table("Categories"), new VALUES(new List<List<object>>()
{
new List<object>() {1, 3 },
new List<object>() {2, 5 },
new List<object>() {3, 0 },
}, "CategoryFeature", "CategoryID", "BitFlag"))
.Where(new Where(new Column("Categories.CategoryID").Equale(new Column("CategoryFeature.CategoryID")))
.AND(new ColumnArithmatic().StartBracket("CategoryFeature.BitFlag").BitwiseAND()
.StartBracket().Value(1).BitwiseOR(2).EndBracket()
.EndBracket().Equale(new ColumnArithmatic().StartBracket().Value(1).BitwiseOR(2).EndBracket()))
)
.Build();

Query build by SqlQueryBuilder 5

            
SELECT Categories.CategoryID,
       Categories.CategoryName
FROM Categories, (VALUES (@pMAIN_2507192004527856340, @pMAIN_2507192004527856341), (@pMAIN_2507192004527856342, @pMAIN_2507192004527856343), (@pMAIN_2507192004527856344, @pMAIN_2507192004527856345)) AS CategoryFeature(CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID
      AND (CategoryFeature.BitFlag & (@pMAIN_2507192004527856346 | @pMAIN_2507192004527856347)) = (@pMAIN_2507192004527856348 | @pMAIN_2507192004527856349);


            
        

Parameters (If used)

Name Value
@pMAIN_2507192004527856340 1
@pMAIN_2507192004527856341 3
@pMAIN_2507192004527856342 2
@pMAIN_2507192004527856343 5
@pMAIN_2507192004527856344 3
@pMAIN_2507192004527856345 0
@pMAIN_2507192004527856346 1
@pMAIN_2507192004527856347 2
@pMAIN_2507192004527856348 1
@pMAIN_2507192004527856349 2

Query Results 5:

  CategoryID CategoryName
1 1 Beverages


6. Get Inactive Categories

SQL Server Query 6

            
-- Bit 1: 1 = Active, 0 = Inactive  
-- Bit 2: 1 = Seasonal, 0 = Non-seasonal
-- Bit 3: 1 = Featured, 0 = Not featured
-- 3. Get Featured Categories
SELECT Categories.CategoryID, Categories.CategoryName
FROM Categories, (VALUES
(1, 3), -- 1 = CategoryID, 3 = BitFlag: Active and Seasonal (1 | 2 = 3)
(2, 5), -- 2 = CategoryID, 5 = BitFlag: Active and Featured (1 | 4 = 5)
(3, 0) -- 3 = CategoryID, 0 = BitFlag: Inactive and Nonseasonal and Not Feature
) AS CategoryFeature (CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID AND (CategoryFeature.BitFlag & 1) = 0;

Create SQL query with SqlQueryBuilder 6

            
var (sql6, parameters6) = new SqlQueryBuilder()  
.Select()
.Columns("Categories.CategoryID", "Categories.CategoryName")
.From(new Table("Categories"), new VALUES(new List<List<object>>()
{
new List<object>() {1, 3 },
new List<object>() {2, 5 },
new List<object>() {3, 0 },
}, "CategoryFeature", "CategoryID", "BitFlag"))
.Where(new Where(new Column("Categories.CategoryID").Equale(new Column("CategoryFeature.CategoryID")))
.AND(new ColumnArithmatic().StartBracket("CategoryFeature.BitFlag").BitwiseAND(1)
.EndBracket().Equale(0))
)
.Build();

Query build by SqlQueryBuilder 6

            
SELECT Categories.CategoryID,
       Categories.CategoryName
FROM Categories, (VALUES (@pMAIN_2507192004527911280, @pMAIN_2507192004527911281), (@pMAIN_2507192004527911282, @pMAIN_2507192004527911283), (@pMAIN_2507192004527911284, @pMAIN_2507192004527911285)) AS CategoryFeature(CategoryID, BitFlag)
WHERE Categories.CategoryID = CategoryFeature.CategoryID
      AND (CategoryFeature.BitFlag & @pMAIN_2507192004527911286) = @pMAIN_2507192004527911287;


            
        

Parameters (If used)

Name Value
@pMAIN_2507192004527911280 1
@pMAIN_2507192004527911281 3
@pMAIN_2507192004527911282 2
@pMAIN_2507192004527911283 5
@pMAIN_2507192004527911284 3
@pMAIN_2507192004527911285 0
@pMAIN_2507192004527911286 1
@pMAIN_2507192004527911287 0

Query Results 6:

  CategoryID CategoryName
1 3 Confections