W binarnym „zestaw” oznacza „ma wartość 1”. „Nie ustawiono” oznacza „ma wartość 0”.
Z dokumentacji Oracle dla BITAND:
„Wynik jest obliczany w kilku krokach. Najpierw każdy argument A jest zastępowany wartością SIGN(A)*FLOOR(ABS(A)). Ta konwersja skutkuje obcięciem każdego argumentu do zera. Następnie każdy argument A (który musi now be a integer) jest konwertowany na binarną wartość dopełnienia n-bitowego do dwóch. Dwie wartości bitowe są łączone za pomocą operacji bitowej AND. Na koniec, wynikowa wartość dopełnienia n-bitowego do dwójki jest konwertowana z powrotem na NUMBER."
Mówiąc prościej, ta funkcja obcina swoje argumenty, konwertuje je na liczbę binarną (obecnie ograniczoną do 128 bitów), AND łączy dwie liczby binarne razem i zwraca wynik konwersji liczby binarnej z powrotem na LICZBĘ.
Oto wynik wszystkich możliwych kombinacji zera i jedynki:
SELECT BITAND(0, 0) AS "0, 0", -- i.e. 0 AND 0 = 0
BITAND(0, 1) AS "0, 1", -- i.e. 0 AND 1 = 0
BITAND(1, 0) AS "1, 0", -- i.e. 1 AND 0 = 0
BITAND(1, 1) AS "1, 1" -- i.e. 1 AND 1 = 1
FROM DUAL;
Bardziej złożonym przykładem byłoby połączenie AND 11 i 5. W systemie binarnym 11 dziesiętne daje „1011”. 5 po przecinku staje się binarnym „0101”. Jeśli ORAZ te wartości razem, jak w
1 0 1 1
0 1 0 1
-------
0 0 0 1
otrzymujesz 1 binarny, który nadal jest 1 po przekonwertowaniu z powrotem na dziesiętny.
Dziel się i ciesz.