位数据类型匹配任何数字字符串

时间:2018-11-28 12:32:06

标签: sql tsql data-conversion sqldatatypes

我的数据库中有一列数据类型位。它仅包含1或0。如果我在where子句中将“ 0”与该列匹配,它将带回0的行。但是,如果我具有此列并与一串随机数进行匹配,则无论何处都将带回行列为1。为什么会这样?

SELECT  
aBitColumn
FROM aTableName
where aBitColumn='7256'

2 个答案:

答案 0 :(得分:1)

  

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

From Microsoft docs

答案 1 :(得分:1)

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

惯例是0以外的任何数字都将转换为1位。

我建议改换方向:

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

不要依赖隐式转换。