SQL Server为什么在比较位和文字时没有隐式转换?

时间:2017-04-10 21:17:26

标签: sql-server types literals

我知道如果你要比较两种不同的类型,sql必须转换具有最低类型优先级的任何一方以匹配另一种类型。例如,在这种情况下,如果左侧是表中的列,则varchar = nvarchar,在进行比较之前,必须将整个集转换为nvarchar。

如果我们遵循相同的模式,使用"其中Bit_Column = 1",SQL必须先将位列转换为整数对吗?但是,当我查看执行计划时,SQL将文字转换为位而不是相反。

为什么会这样?

感谢

1 个答案:

答案 0 :(得分:0)

SQL Server中有位常量:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql

在您的查询中,似乎1被解释为BIT常量。 不幸的是我找不到位和整数常量之间的区别。