我的数据库中有一列数据类型位。它仅包含1或0。如果我在where子句中将“ 0”与该列匹配,它将带回0的行。但是,如果我具有此列并与一串随机数进行匹配,则无论何处都将带回行列为1。为什么会这样?
SELECT
aBitColumn
FROM aTableName
where aBitColumn='7256'
答案 0 :(得分:1)
转换为位会将任何非零值提升为1。
答案 1 :(得分:1)
首先,SQL Server通常不会将字符串转换为位。因此,您所看到的是将整数转换为位。单引号无关紧要。
惯例是0
以外的任何数字都将转换为1
位。
我建议改换方向:
where convert(varchar(255), aBitColumn) = '7256'
不要依赖隐式转换。