Comment puis-je retourner un peu dans SQL Server?
-
05-07-2019 - |
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é).
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