Question

J'essaie d'effectuer un bitwise PAS dans SQL Server. J'aimerais faire quelque chose comme ça:

update foo
set Sync = NOT @IsNew

Remarque: j'ai commencé à écrire ceci et à trouver la réponse à ma propre question avant de terminer. Je voulais toujours partager avec la communauté, car cette documentation manquait sur MSDN (jusqu'à ce que je l'ajoute également au contenu de la communauté).

Était-ce utile?

La solution

Oui, l'opérateur ~ travaillera.

update foo
set Sync = ~@IsNew

Autres conseils

PAS au niveau des bits: ~

ET au niveau du bit: & amp;

Bitwise OU: |

XOR au niveau du bit: ^

Vous manquez de MSDN? http://msdn.microsoft.com/en-us /library/ms173468(SQL.90).aspx

  

~: Effectue une opération NOT logique au niveau des bits sur une valeur entière.   L'opérateur ~ bitwise exécute un NON logique bit par bit pour l'expression, en prenant chaque bit à tour de rôle. Si expression a la valeur 0, les bits du jeu de résultats sont mis à 1; sinon, le bit dans le résultat est effacé jusqu'à une valeur de 0. En d'autres termes, les uns sont remplacés par des zéros et les zéros sont remplacés par des autres.

Par souci d’exhaustivité:

SELECT b, 1 - b
FROM
  (SELECT cast(1 AS BIT) AS b
   UNION ALL
   SELECT cast(0 AS BIT) AS b) sampletable
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top