我想根据比特字段是真还是假来有条件地选择某些内容。这是我最初尝试的语法:
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设置如此?是因为位字段不是真正的布尔值吗?
答案 0 :(得分:13)
因为位数据类型不是布尔类型,所以它是用于优化位存储的数据类型。
字符串“true”和“false”可以转换为一个位的事实可能会产生误导,但引用MSDN,有点是“可以采用的整数数据类型值为1,0或NULL。“