Respuesta sencilla: No
SQL Server tiene un concepto de tipo de dato booleano pero no tiene un tipo de dato booleano real. No puedo declarar una columna con un tipo de dato booleano, y no puedo usarlo así. Sin embargo, el concepto de dato booleano está presente.
Por ejemplo, si escribo lo siguiente:
SELECCIONAR *
DE ALGUNA TABLA
DONDE ALGUNA COLUMNA = ALGUNA OTRA COLUMNA
el resultado de esa comparación es VERDADERO, FALSO, o (no lo olvides) NULO. Y recuerda que NULL no es un valor; es la falta de un valor. Las cláusulas WHERE se satisfacen cuando el valor del predicado es TRUE.
Así que hay un concepto booleano en el lenguaje.
Sin embargo, fíjate en que no puedo escribir esto:
SELECCIONAR ALGUNA COLUMNA = ALGUNA OTRA COLUMNA COMO EL MISMO VALOR
DE ALGUNA TABLA
No puedo simplemente devolver un valor TRUE o FALSE.
Si lo escribo sin el alias, funcionará:
SELECCIONAR ALGUNA COLUMNA = ALGUNA OTRA COLUMNA COMO EL MISMO VALOR
DE LA TABLA
pero en ese caso, estoy devolviendo el valor de ALGUNA OTRA COLUMNA con el alias (nombre) de ALGUNA. No estoy devolviendo la comparación.
¿Pero no es lo mismo que un bit?
No. No puedo usar un valor de bit como un booleano. Por ejemplo, no puedo escribir esto:
IF ISNUMERIC(‘somestring’)
BEGIN
END
En cambio, tengo que escribir esto:
IF ISNUMERIC(‘somestring’) <> 0
BEGIN
END
Nótese que podría haber escrito «= 1» pero prefiero con los valores de bits compararlos siempre con cero en todos los idiomas, dado que algunos idiomas usan -1 para TRUE y otros usan 1 para TRUE.