SQL Server 2012中以0空字符串比较(SQL Server 2012 blank str

2019-10-20 15:01发布

我运行SQL Server 2012在此查询:

select 'weird' 
where '' = 0

它返回'weird'

据我了解, ''是完全不同的0 。 所以,请解释为什么会发生以上。

谢谢

Answer 1:

因此,考虑看看数据类型,站在在WHERE子句

SELECT SQL_VARIANT_PROPERTY(0, 'BaseType'),SQL_VARIANT_PROPERTY('', 'BaseType')

他们返回int, varchar分别。

当比较两个不同的数据类型,具有较低优先级的数据类型将转换为更高的优先级,每MSDN 。

在这种情况下, Varchar转换为int

select cast('' AS int)

上述返回0

从而

select 'weird' where 0 = 0


文章来源: SQL Server 2012 blank string comparison with 0