为什么我不能在SQL case语句中使用位字段作为布尔表达式?

时间:2010-12-02 13:00:26

标签: sql boolean case bit

我想根据比特字段是真还是假来有条件地选择某些内容。这是我最初尝试的语法:

CASE WHEN isSoon THEN 'Soon' ELSE 'Not so soon' END As HowSoon

这对我来说很有意义,因为“WHEN”必须是一个布尔表达式,isSoon,因为它是一个位字段。但是,这不起作用。我最终要做的是:

CASE WHEN isSoon = 1 THEN 'Soon' ELSE 'Not so soon' END As HowSoon

这对我来说似乎是多余的......这就像在编程语言中编写if(isSoon == True)而不是更直观的if(isSoon)并且违背了格式。为什么SQL设置如此?是因为位字段不是真正的布尔值吗?

1 个答案:

答案 0 :(得分:13)

因为位数据类型不是布尔类型,所以它是用于优化位存储的数据类型。

字符串“true”和“false”可以转换为一个位的事实可能会产生误导,但引用MSDN,有点是“可以采用的整数数据类型值为1,0或NULL。“