64

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

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

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

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

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


编辑:3 个很棒的答案,都是围绕 CASE 构建的。我会接受 feihtthief 的,因为他的代表最少,因此最需要它。:-) 谢谢大家。

4

4 回答 4

89

使用 case 构造:

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

另请参阅MSDN Transact-SQL CASE 文档

于 2009-01-30T22:30:45.627 回答
21
SELECT 'TestName', 
    CASE WHEN Foo = 'Result' THEN 1 ELSE 0 END AS TestResult
FROM bar 
WHERE baz = @Criteria
于 2009-01-30T22:30:44.427 回答
17

用例:

SELECT 'Test Name' [col1],
  CASE foo
    WHEN 'Result' THEN 1
    ELSE 0
  END AS [col2]
FROM bar
WHERE baz = (some criteria)
于 2009-01-30T22:33:14.813 回答
13

您还可以使用:

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

我知道这是不久前被问到的,但我希望这对那里的人有所帮助。

于 2015-09-12T00:48:31.407 回答