SQL选择列表中的布尔表达式

时间:2009-01-30 22:28:26

标签: sql unit-testing tsql expression assert

我想创建一个SQL Select来在MS SQL Server 2005中进行单元测试。基本思路是:

选择'测试名称',foo ='结果' 从酒吧 其中baz =(某些标准)

这个想法是,如果“foo”列的值是“Result”,那么我将得到一个值true / 1;如果不是,我会得到假/ 0。

不幸的是,T-SQL不喜欢这个表达式;它在等号上窒息。

是否有某种方法可以在SQL选择列表中评估表达式并获得可返回的结果? (或者实现我想要的单元测试的其他方式?)


编辑:3个伟大的答案,全部围绕CASE。我会接受feihtthief,因为他的代表最少,因此最需要它。 :-)感谢大家。

4 个答案:

答案 0 :(得分:77)

使用案例构造:

select 'Test Name', 
    case when foo = 'Result' then 1 else 0 end 
    from bar where baz = (some criteria)

另见the MSDN Transact-SQL CASE documentation

答案 1 :(得分:18)

SELECT 'TestName', 
    CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar 
WHERE baz = @Criteria

答案 2 :(得分:15)

使用CASE:

SELECT 'Test Name' [col1],
  CASE foo
    WHEN 'Result' THEN 1
    ELSE 0
  END AS [col2]
FROM bar
WHERE baz = (some criteria)

答案 3 :(得分:7)

您也可以使用:

select 
    'Test Name', 
    iif(foo = 'Result', 1, 0)
from bar 
where baz = (some criteria)

我知道有人问过这个问题,但我希望这可以帮助那些人。