Est-il un moyen élégant pour Inverser un Bit de valeur dans une Instruction SQL insert?
Je suis à la conversion de certains de données dans SQL Server:
INSERT INTO MYTABLE (AllowEdit)
(Select PreventEdit from SOURCETABLE)
j'ai donc besoin d'inverser les bits de la valeur à partir de la table source. Je m'attendais à NOT
de travail, comme c'est comment je pourrais faire dans le code, mais il ne le fait pas. La façon la plus élégante, je pense:
INSERT INTO MYTABLE (AllowEdit)
(Select ABS(PreventEdit -1) from SOURCETABLE)
Est-il plus standard de la manière de le faire?
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas testé moi-même, mais vous devriez être capable d'utiliser le opérateur de négation bit à bit,
~
un peu:PAS ou XOR si peu
Si elle n'est pas réellement peu dans SourceTable puis ceci:
Edit: Un test, la note n'est PAS 2s complément de la sorte, peut donner des résultats bizarres si non utilisé sur une colonne de bits
1 ^ IsDeleted
pour obtenir le bon est actif valeur (1 ^ 1 = bit 0, 1 ^ 0 = bit 1).INSERT INTO MATABLE (AllowEdit)
(SÉLECTIONNEZ ~ISNULL(PreventEdit,0) DE la SourceTable