Risposta semplice: No
SQL Server ha un concetto di tipo di dati booleano ma non ha un vero tipo di dati booleano. Non posso dichiarare una colonna con un tipo di dati booleano e non posso usarla in questo modo. Tuttavia, il concetto di dati booleani è presente.
Per esempio, se scrivo quanto segue:
SELECT *
FROM Sometable
WHERE Somecolumn = Someothercolumn
il risultato di questo confronto è TRUE, FALSE, o (non dimenticate) NULL. E ricordate che NULL non è un valore; è la mancanza di un valore. Le clausole WHERE sono soddisfatte quando il valore del predicato è TRUE.
Così, c’è un concetto booleano nel linguaggio.
Tuttavia, notate che non posso scrivere questo:
SELECT Somecolumn = Someothercolumn AS TheSameValue
FROM Sometable
Non posso semplicemente restituire un valore TRUE o FALSE.
Se lo scrivo senza l’alias, funziona:
SELECT Somecolumn = Someothercolumn AS TheSameValue
FROM Sometable
ma in questo caso, sto restituendo il valore di Someothercolumn con alias (chiamato come) Somecolumn. Non sto restituendo il confronto.
Ma non è la stessa cosa di un bit?
No. Non posso usare un valore bit come un booleano. Per esempio, non posso semplicemente scrivere questo:
IF ISNUMERIC(‘somestring’)
BEGIN
END
Invece, devo scrivere questo:
IF ISNUMERIC(‘somestring’) <> 0
BEGIN
END
Nota che avrei potuto scrivere “= 1” ma preferisco con i valori bit confrontarli sempre con zero in tutte le lingue, dato che alcune lingue usano -1 per TRUE e altre usano 1 per TRUE.