SQL Server: NOT en camps BIT
SQL Server no té un tipus BOOLEAN real per als camps d’una taula. Tradicionalment hom ha utilitzat el tipus BIT en el qual el valor 0 indica FALS i l’1 VERTADER.
A l’hora de fer comparacions, però, no és possible utilitzar la clàusula NOT per a obtenir el contrari del valor. El codi següent dóna un error.
select NOT cast(0 as bit)
Això passa perquè SQL Server no identifica un bit a 0 com un camp boolean.
En canvi, si utilitzem l’operador NOT de bitwise (~), el resultat sí que és l’esperat.
select cast(0 as bit) as 'Fals', ~ cast(0 as bit) as 'NOT Fals', cast(1 as bit) as 'True', ~ cast(1 as bit) as 'NOT True'