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'