【发布时间】:2010-12-02 13:00:25
【问题描述】:
我想根据位字段是真还是假有条件地选择一些东西。这是我最初尝试的语法:
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 是这样设置的?是不是因为位域不是真正的布尔值?
【问题讨论】:
-
您能说一下您使用的是什么数据库提供商吗? MySQL 似乎对此没有问题。
-
这也困扰着我,但 sql 不是那样设置的。就像在将参数传递给 SP 时不能使用计算一样(例如,你不能这样做
exec ListPermissionsByUser @DomainName + '\' + @UserName)