我试图了解逻辑操作的优先顺序并具有以下代码:
declare @T bit ='TRUE'
declare @F bit ='False'
print @T and @F
它返回一个错误
关键字“and”附近的语法不正确。
我将 'and' 替换为 '&',代码又可以工作了。为什么以前的代码不起作用?我正在使用 SQL 服务器。
我试图了解逻辑操作的优先顺序并具有以下代码:
declare @T bit ='TRUE'
declare @F bit ='False'
print @T and @F
它返回一个错误
关键字“and”附近的语法不正确。
我将 'and' 替换为 '&',代码又可以工作了。为什么以前的代码不起作用?我正在使用 SQL 服务器。
退货
0
&
是位与运算符。在您的情况下
@T & @F
解析为1 & 0
,因此返回BIT
具有值的数据类型的结果0
当传递给
PRINT
操作员时,此bit
结果将隐式转换为字符串并将结果输出到客户端。它有很多错误。
AND
bit
与布尔值不同。它们不可互换,并且 SQL Serverbit
在需要时不会隐式转换为布尔数据类型(SQL Server 不实现 SQL 布尔数据类型。)。所以你需要使用类似的表达式
代替
即使这样,您的问题还没有结束 -
PRINT
无论如何都不接受布尔表达式。您可以使用如下表达式CASE
。