我想创建一个SQL Select来在MS SQL Server 2005中进行单元测试.基本思路是这样的:
从吧中选择'测试名',foo ='结果',其中baz =(某些标准)
这个想法是,如果"foo"列的值是"Result",那么我将得到一个值true/1; 如果不是,我会得到假/ 0.
不幸的是,T-SQL不喜欢这个表达式; 它在等号上窒息.
是否有某种方法可以在SQL选择列表中评估表达式并获得可返回的结果?(或者实现我想要的单元测试的其他方式?)
编辑:3个伟大的答案,全部围绕CASE.我会接受feihtthief,因为他的代表最少,因此最需要它.:-) 谢谢大家.
使用案例构造:
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
使用案例:
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)
我知道这是有一段时间被问到的,但我希望这有助于那里的人.