sql >> Base de Datos >  >> RDS >> Oracle

función oracle bitand

En binario, "set" significa "tiene el valor 1". "No establecido" significa "tiene el valor 0".

De los documentos de Oracle para BITAND:

"El resultado se calcula en varios pasos. Primero, cada argumento A se reemplaza con el valor SIGNO(A)*PISO(ABS(A)). Esta conversión tiene el efecto de truncar cada argumento hacia cero. A continuación, cada argumento A (que debe ahora ser un valor entero) se convierte en un valor entero binario de complemento a dos de n bits. Los dos valores de bit se combinan mediante una operación AND bit a bit. Finalmente, el valor de complemento a dos de n bits resultante se vuelve a convertir en NÚMERO".

En pocas palabras, esta función trunca sus argumentos, los convierte en un número binario (actualmente limitado a 128 bits), combina los dos números binarios y devuelve el resultado de convertir el número binario nuevamente en un NÚMERO.

Aquí está el resultado de todas las combinaciones posibles de cero y uno:

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;

Un ejemplo más complejo sería unir 11 y 5 con AND. En binario, 11 decimal se convierte en "1011". 5 decimal se convierte en binario "0101". Si Y estos valores juntos, como en

1 0 1 1
0 1 0 1
-------
0 0 0 1

obtienes 1 binario, que sigue siendo 1 cuando se vuelve a convertir a decimal.

Comparte y disfruta.