SQL Server 2012与0的空字符串比较
我正在SQL Server 2012上运行此查询: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 比较两种不同的数据类型时,优先级较低的数据类型将根据转换为优先级
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