T-SQLに三項条件演算子はありますか?


112

次のクエリを実装する代替方法は何ですか。

select *  
from table  
where isExternal = @type = 2 ? 1 : 0

4
もちろん、タイトルで提起する質問に対する答えは-もちろんです。BETWEENオペレータは、3つの引数を取るように定義されています。あなたが探していたことだったの条件 -演算子起こるほとんどの言語で定義された3つの引数を取るように定義されている唯一の事業者であることを。
Damien_The_Unbeliever

1
@JFAは-いや、三項演算子は、3つのオペランドを取る任意の演算子です。ほとんどの言語では、3項演算子がある場合、1つしか持たないことが一般的です。つまり、(一般に)条件演算子と呼ばれます。間違った名前で(または特定の意味で一般的な名前を使用して)呼び出しを行うと、混乱が生じる可能性があります。詳細なガイダンスについては、三項演算子タグwiki を参照してください。
Damien_The_Unbeliever

@Damien_The_Unbeliever en.wikipedia.org/wiki/Ternary_operation:「三項演算子」を参照
ティモシーカンスキ

@TimothyKanski-以前のコメントの内容とスタイル(特にaに重点を置くなど)を考慮して、私はこれを知らないと思いますか?
Damien_The_Unbeliever

6
OPは、間違った名前や一般的な名前ではなく、物事の一般名を使用しました。これが実際に一般的に使用されている用語である場合、専門家(このサイトが構築された人)が混乱するというあなたの結論には同意しません。
ティモシーカンスキ16

回答:


122

使用case

select *
from table
where isExternal = case @type when 2 then 1 else 0 end

165

SQL Server 2012では、次のIIF関数を使用できます。

SELECT *
FROM table
WHERE isExternal = IIF(@type = 2, 1, 0)

また注意:T-SQLでは、代入(および比較)演算子は単なる=(そしてそうではありません==-それはC#です)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.