print @T & @F
Devoluciones 0
&
es el operador Y bit a bit .
El operador & bitwise realiza un AND lógico bit a bit entre las dos expresiones, tomando cada bit correspondiente para ambas expresiones. Los bits en el resultado se establecen en 1 si y solo si ambos bits (para el bit actual que se está resolviendo) en las expresiones de entrada tienen un valor de 1; de lo contrario, el bit en el resultado se establece en 0.
En su caso, @T & @F
resuelve ay 1 & 0
devuelve un resultado de tipo de datos BIT
con valor0
Cuando se pasa al PRINT
operador, este bit
resultado se convierte implícitamente en cadena y el resultado se envía al cliente.
print @T and @F
Tiene bastante mal con eso.
AND
Combina dos expresiones booleanas y devuelve VERDADERO cuando ambas expresiones son VERDADERAS
bit
No es lo mismo que booleano. No son intercambiables y SQL Server no se convertirá implícitamente bit
en un tipo de datos booleano cuando sea necesario (SQL Server no implementa el tipo de datos booleano SQL).
Entonces necesitarías usar una expresión como
@T = 'TRUE' AND @F = 'TRUE'
en lugar de
@T and @F
Incluso entonces sus problemas no han terminado, de PRINT
todos modos no acepta una expresión booleana. Puede usar la expresión de la CASE
siguiente manera.
PRINT CASE
WHEN (@T = 'TRUE' AND @F = 'TRUE') THEN 'True'
WHEN NOT (@T = 'TRUE' AND @F = 'TRUE') THEN 'False'
ELSE 'Unknown' -- SQL uses three valued logic
END