我运行SQL Server 2012在此查询:
select 'weird'
where '' = 0
它返回'weird'
。
据我了解, ''
是完全不同的0
。 所以,请解释为什么会发生以上。
谢谢
我运行SQL Server 2012在此查询:
select 'weird'
where '' = 0
它返回'weird'
。
据我了解, ''
是完全不同的0
。 所以,请解释为什么会发生以上。
谢谢
因此,考虑看看数据类型,站在在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