SQL Server 2012与0的空字符串比较

SQL Server 2012与0的空字符串比较,sql,sql-server,where,behavior,Sql,Sql Server,Where,Behavior,我正在SQL Server 2012上运行此查询: select 'weird' where '' = 0 它正在返回“怪异” 据我所知,'与0有很大不同。因此,请解释为什么会发生上述情况 感谢所以,请查看where子句中的数据类型 SELECT SQL_VARIANT_PROPERTY(0, 'BaseType'),SQL_VARIANT_PROPERTY('', 'BaseType') 它们分别返回int和varchar 比较两种不同的数据类型时,优先级较低的数据类型将根据转换为优先级

我正在SQL Server 2012上运行此查询:

select 'weird' 
where '' = 0
它正在返回
“怪异”

据我所知,
'
0
有很大不同。因此,请解释为什么会发生上述情况


感谢所以,请查看
where
子句中的数据类型

SELECT SQL_VARIANT_PROPERTY(0, 'BaseType'),SQL_VARIANT_PROPERTY('', 'BaseType')
它们分别返回
int和varchar

比较两种不同的数据类型时,优先级较低的数据类型将根据转换为优先级较高的数据类型

在本例中,
Varchar
转换为
int

select cast('' AS int)
上面返回
0

因此


可能是重复的,谢谢你的详细回答!!:)
select 'weird' where 0 = 0