una sofas sofa sillones separados precios pieza modulos modulares modernos fama diseñar sql sql-server bit-manipulation

sofas - ¿Cómo puedo voltear un poco en SQL Server?



sofas fama precios (4)

Estoy intentando realizar un NOT bit a bit en SQL Server. Me gustaría hacer algo como esto:

update foo set Sync = NOT @IsNew

Nota: Empecé a escribir esto y descubrí la respuesta a mi propia pregunta antes de terminar. Todavía quería compartir con la comunidad, ya que esta documentación faltaba en MSDN (hasta que también la agregué al contenido de la comunidad).


Sí, el ~ operador funcionará.

update foo set Sync = ~@IsNew


En aras de la exhaustividad:

SELECT b, 1 - b FROM (SELECT cast(1 AS BIT) AS b UNION ALL SELECT cast(0 AS BIT) AS b) sampletable


¿Falta en MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx

~: Realiza una operación lógica NOT bit a bit en un valor entero. El operador bit a bit realiza una lógica NO bit a bit para la expresión, tomando cada bit por turno. Si la expresión tiene un valor de 0, los bits en el conjunto de resultados se establecen en 1; de lo contrario, el bit en el resultado se borra a un valor de 0. En otras palabras, unos se cambian a ceros y los ceros se cambian a unos.


NO a nivel de bit: ~

Bitwise AND: &

Bitwise OR: |

Bitwise XOR: ^