I binært betyder "sæt" "har værdien 1". "Ikke indstillet" betyder "har værdien 0".
Fra Oracle-dokumenterne til BITAND:
"Resultatet beregnes i flere trin. Først erstattes hvert argument A med værdien SIGN(A)*FLOOR(ABS(A)). Denne konvertering har den effekt, at hvert argument trunkeres mod nul. Dernæst hvert argument A (som skal nu være en heltalsværdi) konverteres til en n-bit to's komplement binær heltalsværdi. De to bitværdier kombineres ved hjælp af en bitvise AND-operation. Til sidst konverteres den resulterende n-bit tos komplementværdi tilbage til NUMBER."
Kort sagt afkorter denne funktion sine argumenter, konverterer dem til et binært tal (i øjeblikket begrænset til 128 bit), OG er de to binære tal sammen, og returnerer resultatet af konvertering af det binære tal tilbage til et TAL.
Her er resultatet af alle mulige kombinationer af nul og én:
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;
Et mere komplekst eksempel ville være at AND sammen 11 og 5. I binær bliver 11 decimal "1011". 5 decimal bliver "0101" binær. Hvis du OG disse værdier sammen, som i
1 0 1 1
0 1 0 1
-------
0 0 0 1
du får 1 binær, som stadig er 1, når den konverteres tilbage til decimal.
Del og nyd.