V binární podobě „set“ znamená „má hodnotu 1“. "Nenastaveno" znamená "má hodnotu 0".
Z dokumentů Oracle pro BITAND:
"Výsledek se vypočítá v několika krocích. Nejprve je každý argument A nahrazen hodnotou SIGN(A)*FLOOR(ABS(A)). Tento převod má za následek zkrácení každého argumentu směrem k nule. Dále každý argument A (který musí now be celočíselná hodnota) se převede na n-bitovou dvojkovou binární celočíselnou hodnotu. Tyto dvě bitové hodnoty se spojí pomocí bitové operace AND. Nakonec se výsledná n-bitová dvojka převede zpět na NUMBER."
Jednoduše řečeno, tato funkce zkrátí své argumenty, převede je na binární číslo (momentálně omezeno na 128 bitů), AND jsou dvě binární čísla dohromady a vrátí výsledek převodu binárního čísla zpět na ČÍSLO.
Zde je výsledek všech možných kombinací nuly a jedničky:
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;
Složitějším příkladem by bylo součinové spojení 11 a 5. V binární soustavě se 11 desítkové stává "1011". 5 desetinných míst se změní na "0101" binární. Pokud A tyto hodnoty dohromady, jako v
1 0 1 1
0 1 0 1
-------
0 0 0 1
získáte 1 binární soubor, který je při převodu zpět na desítkové číslo stále 1.
Sdílejte a užívejte si.