Jeśli potrzeba wykonać operacje logiczne na operatorach bitowych zawartych jako kolumny w tabelach bez problemu można to wykonać z poziomu języka T-SQL SQL Server.
T-SQL udostępnia operatory bitowe do wykonywania operacji logicznych na kolumnach tabeli bazy danych SQL Server. Poniżej przedstawię operatory bitowe OR, AND i XOR. Zaczniemy od utworzenia tabeli z kolumną klucza podstawowego, wraz z dwiema kolumnami typu danych BIT. Następnie wypełnimy tabelę czterema wierszami, tak jakbyśmy tworzyli klasyczną tabelę prawdy.
Poniżej tabela z podstawowymi operacjami logicznymi:
Najpierw utworzymy tabelę z danymi na podstawie kodu przedstawionego poniżej:
drop table if exists #Bitwise
create table #Bitwise
( ID integer identity(1,1) not null primary key,
ArgA bit,
ArgB bit
)
insert into #Bitwise(ArgA,ArgB) values
(0,0)
,(0,1)
,(1,0)
,(1,1)
select * from #Bitwise order by ID
Znak pipe(|) jest operatorem bitowym OR w T-SQL
Poniższe zapytanie tworzy tabelę prawdy dla operacji OR między kolumnami ArgA i ArgB. LogicalOR będzie równy 1, jeśli którykolwiek z atrybutów ArgA lub ArgB jest równy 1.
select *, ArgA|ArgB as LogicalOR
from #Bitwise
order by ID
Znak Ampersand (&) jest operatorem bitowym AND w T-SQL
Poniższe zapytanie tworzy tabelę prawdy dla operacji AND między kolumnami ArgA i ArgB. LogicalAND będzie równe 1, jeśli ArgA jak i ArgB jest równy 1.
select *, ArgA&ArgB as LogicalAND
from #Bitwise
order by ID
Znak daszka (^) jest bitowym operatorem XOR (wyłącznym OR) w T-SQL
Poniższy kod T-SQL tworzy tabelę prawdy dla operacji XOR między kolumnami ArgA i ArgB. LogicalXOR będzie równy 1, jeśli ArgA jest równy ArgB.
select *, ArgA^ArgB as LogicalXOR
from #Bitwise
order by ID
Znak tyldy (~) jest operatorem bitowym NOT w T-SQL
Poniższy przykład przedstawia operację negacji ArgA. LogicalNOT będzie równy 1 jeśli ArgA będzie równy 0.
select ID, ArgA, ~ArgA as LogicalNOT
from #Bitwise
order by ID
Poniższy przykład przedstawia operację OR wraz z negacją operacji OR.
select *, ArgA|ArgB as LogicalOR,
~(ArgA|ArgB) as LogicalNOT_OR
from #Bitwise
order by ID
Poniższy przykład przedstawia operację AND wraz z negacją operacji AND.
select *, ArgA&ArgB as LogicalAND,
~(ArgA&ArgB) as LogicalNOT_AND
from #Bitwise
order by ID
Poniższy przykład przedstawia operację XOR wraz z negacją operacji XOR.
select *, ArgA^ArgB as LogicalXOR,
~(ArgA^ArgB) as LogicalNOT_XOR
from #Bitwise
order by ID