Compartir a través de


| (OR bit a bit) (Transact-SQL)

Realiza una operación OR bit a bit lógica entre dos valores de tipo entero especificados tal y como aparecen traducidos en expresiones binarias en instrucciones Transact-SQL.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

expression | expression

Argumentos

  • expression
    Es cualquier expresión válida de la categoría del tipo de datos entero o de los tipos de datos bit, binary o varbinary. expression se trata como un número binario para la operación bit a bit.

    Nota

    Sólo una expression puede ser del tipo de datos binary o varbinary en una operación bit a bit.

Tipos de resultado

Devuelve un int si los valores de entrada son int, un smallint si los valores de entrada son smallint o un tinyint si los valores de entrada son tinyint.

Comentarios

El operador | de bit a bit realiza una operación OR lógica de bit a bit entre las dos expresiones y, para ello, toma cada bit correspondiente de ambas expresiones. Los bits del resultado se establecen en 1 si alguno o ambos bits (para el bit actual que se resuelve) de las expresiones de entrada tienen el valor 1; si ninguno de los bits de la expresión de entrada es 1, el bit del resultado se establece en 0.

Si las expresiones de la izquierda y de la derecha tienen tipos de datos entero diferentes (por ejemplo, expression de la izquierda es de tipo smallint y expression de la derecha es de tipo int), el argumento del tipo de datos más pequeño se convierte al tipo de datos mayor. En este ejemplo, la smallintexpression se convierte en int.

Ejemplos

En el ejemplo siguiente se crea una tabla con tipos de datos int para mostrar los valores originales y se pone la tabla en una fila.

USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
      WHERE TABLE_NAME = 'bitwise')
   DROP TABLE bitwise;
GO
CREATE TABLE bitwise
( 
 a_int_value int NOT NULL,
b_int_value int NOT NULL
);
GO
INSERT bitwise VALUES (170, 75);
GO

Esta consulta realiza la operación OR bit a bit en las columnas a_int_value y b_int_value.

USE tempdb;
GO
SELECT a_int_value | b_int_value
FROM bitwise;
GO

El conjunto de resultados es el siguiente.

----------- 
235         

(1 row(s) affected)

La representación binaria de 170 (a_int_value o A, a continuación) es 0000 0000 1010 1010. La representación binaria de 75 (b_int_value o B, a continuación) es 0000 0000 0100 1011. Al realizar la operación OR bit a bit en estos dos valores, se produce el resultado binario 0000 0000 1110 1011, que es 235 en decimal.

(A | B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 1011