【问题标题】:Bit datatype matches any string of numbers位数据类型匹配任何数字字符串
【发布时间】:2019-04-30 08:49:03
【问题描述】:

我的数据库中有一个数据类型位列。它只包含 1 或 0。如果我在 where 子句中将此列与“0”匹配,它只会带回带有 0 的行。但是,如果我有此列并将其与一串随机数匹配,它将带回任何位置的行列是 1。为什么会这样?

SELECT  
aBitColumn
FROM aTableName
where aBitColumn='7256'

【问题讨论】:

标签: sql tsql data-conversion sqldatatypes


【解决方案1】:

首先,SQL Server 通常不将字符串转换为位。所以,你看到的是整数到位的转换。单引号无关紧要。

约定是0 以外的任何数字都转换为1 位。

我会建议在另一个方向进行转换:

where convert(varchar(255), aBitColumn) = '7256'

不要依赖隐式转换。

【讨论】:

    【解决方案2】:

    转换为位会将任何非零值提升为 1。

    From Microsoft docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-14
      • 2014-11-02
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多