SQLselect列表中的布尔expression式
我想创build一个SQLselect在MS SQL Server 2005中进行unit testing。基本思想是这样的:
select'Test Name',foo ='Result'from bar where baz =(某些标准)
这个想法是,如果“富”列的值是“结果”,那么我会得到一个值为true / 1; 如果不是,我会得到假/ 0。
不幸的是,T-SQL不喜欢expression式; 它在等号上窒息。
是否有某种方法来评估SQLselect列表中的expression式并获得可返回的结果? (或者其他一些实现我想要的unit testing的方法?)
编辑:3伟大的答案,都围绕CASEbuild成。 我会接受这个信号,因为他得到最less的代表,因此最需要它。 :-) 谢谢大家。
使用案例结构:
select 'Test Name', case when foo = 'Result' then 1 else 0 end from bar where baz = (some criteria)
另请参阅MSDN Transact-SQL CASE文档 。
SELECT 'TestName', CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult FROM bar WHERE baz = @Criteria
使用CASE:
SELECT 'Test Name' [col1], CASE foo WHEN 'Result' THEN 1 ELSE 0 END AS [col2] FROM bar WHERE baz = (some criteria)
你也可以使用:
select 'Test Name', iif(foo = 'Result', 1, 0) from bar where baz = (some criteria)
我知道这是问了一阵子,但我希望这可以帮助那里的人。