Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

oracle bit e função


Em binário, "set" significa "tem o valor 1". "Não definido" significa "tem o valor 0".

Dos documentos Oracle para BITAND:

"O resultado é calculado em várias etapas. Primeiro, cada argumento A é substituído pelo valor SIGN(A)*FLOOR(ABS(A)). Esta conversão tem o efeito de truncar cada argumento em direção a zero. Em seguida, cada argumento A (que deve agora ser um valor inteiro) é convertido em um valor inteiro binário de complemento de dois de n bits. Os valores de dois bits são combinados usando uma operação AND bit a bit. Finalmente, o valor de complemento de dois de n bits resultante é convertido de volta para NUMBER."

Simplificando, esta função trunca seus argumentos, converte-os em um número binário (atualmente limitado a 128 bits), AND's os dois números binários juntos e retorna o resultado da conversão do número binário de volta para um NUMBER.

Aqui está o resultado de todas as combinações possíveis de zero e um:
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;

Um exemplo mais complexo seria colocar AND juntos 11 e 5. Em binário, 11 decimal se torna "1011". 5 decimal torna-se binário "0101". Se você E esses valores juntos, como em
1 0 1 1
0 1 0 1
-------
0 0 0 1

você obtém 1 binário, que ainda é 1 quando convertido de volta para decimal.

Compartilhe e curta.