Answers:
print @T & @F
退货 0
&
是按位AND运算符。
&按位运算符在两个表达式之间执行按位逻辑与,并取两个表达式的每个对应位。当且仅当输入表达式中的两个位(对于要解析的当前位)的值都为1时,结果中的位才设置为1;否则,将结果中的位设置为1。否则,结果中的位设置为0。
在您的情况下@T & @F
解析为1 & 0
,因此返回BIT
具有值的数据类型的结果0
当传递给PRINT
运算符时,此bit
结果将隐式转换为字符串,并将结果输出到客户端。
print @T and @F
有很多错误。
合并两个布尔表达式,并且当两个表达式均为TRUE时返回TRUE
bit
与boolean不同。它们不可互换,并且bit
在需要时SQL Server不会隐式转换为布尔数据类型(SQL Server不实现SQL布尔数据类型。)。
因此,您需要使用类似
@T = 'TRUE' AND @F = 'TRUE'
代替
@T and @F
即便如此,您的问题还没有结束- PRINT
无论如何都不接受布尔表达式。您可以在CASE
下面使用表达式。
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