78 votes

Comment retourner des champs de bits dans T-SQL?

J’essaie de retourner un champ de bits dans SQL Server à l’aide d’une requête de mise à jour, c’est-à-dire que je veux transformer tous les 0 en 1 et vice versa. Quelle est la solution la plus élégante ?

Il ne semble pas y avoir d’opérateur NOT bitwise dans T-SQL (sauf s’il me manque quelque chose d’évident) et je n’ai pas pu trouver d’autre moyen d’effectuer la mise à jour.

136voto

Austin Salonen Points 28057

Vous n’avez pas besoin d’un bitwise - pas pour cela - juste XOR avec 1 / true.

Pour le vérifier :

Pour mettre à jour :

MSDN T-SQL Exclusive-OR (^)

55voto

gbn Points 197263

Pourquoi pas un simple ``?

30voto

Une autre façon est

où « ~ » signifie opérateur « NOT ». C’est propre et vous obtenez un bon code à lire. « nier le bit » est encore plus propre et fait exactement ce pour quoi l’opérateur « NOT » a été conçu.

18voto

Thomas Owens Points 45042

J’étais à peu près sûr que la plupart des versions SQL n’avaient pas un peu, alors j’ai vérifié et il semble y en avoir une dans TSQL.

D’après la documentation, c’est le personnage ``.

14voto

Mayo Points 5532
<pre><code></code><p>C’est fade mais tout le monde comprendra ce qu’il fait.</p><p>ÉDITER:</p><p>Vous devrez peut-être également tenir compte des valeurs NULL comme suggéré dans les commentaires. Cela dépend de vos req bien sûr.</p><pre><code></code></pre></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X