【问题标题】:SQL Server 2012 blank string comparison with 0SQL Server 2012 与 0 的空白字符串比较
【发布时间】:2014-09-28 07:42:33
【问题描述】:

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

select 'weird' 
where '' = 0

它正在返回'weird'

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

谢谢

【问题讨论】:

标签: sql sql-server where behavior


【解决方案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

【讨论】:

  • 感谢详细解答!! :)
猜你喜欢
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多