web-dev-qa-db-ja.com

SQL Selectリストのブール式

SQL Selectを作成して、MS SQL Server 2005で単体テストを実行します。基本的な考え方は次のとおりです。

「テスト名」、foo =「結果」を選択します。ここで、baz =(いくつかの基準)

「foo」列の値が「Result」の場合、true/1の値を取得するという考えです。そうでない場合、false/0になります。

残念ながら、T-SQLはこの式が好きではありません。等号で窒息します。

SQL選択リスト内の式を評価し、返される結果を取得する方法はありますか? (または私が望むユニットテストを達成する他の方法?)


編集:3つの素晴らしい答え、すべてCASEを中心に構築されています。彼が最も少ない担当者を持っているので、それを最も必要としているので、私はfeihtthiefを受け入れます。 :-) 皆に感謝します。

48
Craig Walker

ケース構成を使用します。

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

MSDN Transact-SQL CASEドキュメント も参照してください。

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

使用事例:

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

以下も使用できます。

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

私はこれがしばらく前に尋ねられたことを知っていますが、これがそこの誰かを助けることを望みます。

7
Sebastian G