Resposta simples: No
SQL Server tem um conceito de tipo de dados booleano, mas não tem um tipo de dados booleano real. Não posso declarar uma coluna com um tipo de dados booleanos, e não posso utilizá-la dessa forma. Contudo, o conceito de dados booleanos está presente.
Por exemplo, se eu escrever o seguinte:
p>SELECT *
FROM Sometable
WHERE Somecolumn = Someothercolumn
o resultado dessa comparação é VERDADEIRO, FALSO, ou (não se esqueça) NULL. E lembrem-se que NULL não é um valor; é a falta de um valor. ONDE as cláusulas são satisfeitas quando o valor do predicado é VERDADEIRO.
Assim, existe um conceito booleano na linguagem.
No entanto, note-se que não posso escrever isto:
p>SELECT Somecolumn = Someothercolumn AS TheSameValue
FROM Sometable
Não posso simplesmente devolver um valor VERDADEIRO ou FALSO.
Se o escrever sem o alias, funcionará:
SELECT Somecolumn = Someothercolumn AS TheSameValue
FROM Sometable
mas nesse caso, estou a devolver o valor de Someothercolumn aliased (nomeado como) Somecolumn. Não estou a devolver a comparação.
Mas não é o mesmo que um bit?
Não. Não posso usar um valor de bit como um booleano. Por exemplo, não posso simplesmente escrever isto:
IF ISNUMERIC(‘somestring’)
BEGIN
P>END
Em vez disso, tenho de escrever isto:
IF ISNUMERIC(‘somestring’) <> 0
BEGIN
END
Nota que eu poderia ter escrito “= 1” mas prefiro com valores de bits para os comparar sempre a zero em todas as línguas, dado que algumas línguas usam -1 para VERDADEIRO e outras usam 1 para VERDADEIRO.