Función BIT_AND
La función BIT_AND ejecuta operaciones AND bit a bit en todos los valores de una única columna o expresión con valores enteros. Estas funciones agregan cada bit de cada valor binario que corresponde a cada valor entero en la expresión.
La función BIT_AND devuelve un resultado de 0
si ninguno de los bits se establece en 1 en todos los valores. Si uno o más bits se establece en 1 en todos los valores, la función devuelve un valor entero. Este entero es el número que corresponde al valor binario para esos bits.
Por ejemplo, una tabla tiene cuatro valores enteros en una columna: 3, 7, 10 y 22. Esos enteros están representados en formato binario de la siguiente manera:
Entero | Valor binario |
---|---|
3 | 11 |
7 | 111 |
10 | 1010 |
22 | 10110 |
Una operación BIT_AND en este conjunto de datos encuentra que todos los bits se establecen en 1
solo en la penúltima posición. El resultado es un valor binario de 00000010
, que representa el valor entero 2
. Por lo tanto, la función BIT_AND devuelve 2
.
Sintaxis
BIT_AND ( [DISTINCT | ALL] expression )
Argumentos
- expression
-
La columna o expresión de destino sobre la que opera la función. Esta expresión debe tener un tipo de datos INT, INT2 o INT8. La función devuelve un tipo de datos INT, INT2 o INT8 equivalente.
- DISTINCT | ALL
-
Con el argumento DISTINCT, la función elimina todos los valores duplicados para la expresión especificada antes de calcular el resultado. Con el argumento ALL, la función retiene todos los valores duplicados. El valor predeterminado es ALL. Para obtener más información, consulte DISTINCT compatible con agregaciones bit a bit.
Ejemplos
Dado que esa información significativa de negocio se almacena en columnas con valores enteros, puede usar funciones bit a bit para extraer y acumular esa información. La siguiente consulta aplica la función BIT_AND a la columna LIKES en una tabla que se llama USERLIKES y agrupa los resultados según la columna CITY.
select city, bit_and(likes) from userlikes group by city order by city; city | bit_and --------------+--------- Los Angeles | 0 Sacramento | 0 San Francisco | 0 San Jose | 64 Santa Barbara | 192 (5 rows)
Estos resultados se pueden interpretar de la siguiente manera:
-
El valor entero
192
para Santa Barbara se traduce al valor binario11000000
. En otras palabras, a todos los usuarios de esta ciudad les gustan deportes y teatro, pero no a todos les gusta otro tipo de evento. -
El valor entero
64
se traduce a01000000
. Entonces, para los usuarios de San José, el único tipo de evento que les gusta a todos es el teatro. -
Los valores de
0
para las otras tres ciudades indican que no se comparten "gustos" entre todos los usuarios de esas ciudades.