11

我想根据位字段是真还是假有条件地选择一些东西。这是我最初尝试的语法:

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 是这样设置的?是因为位字段不是真正的布尔值吗?

4

1 回答 1

13

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

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

于 2010-12-02T13:04:05.830 回答