2013-04-25 64 views
68

有什麼替代方案來實現以下查詢:T-Sql中是否有三元運算符?

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

當然,您在標題中提出的問題的答案是 - 當然。 ['BETWEEN'](https://msdn.microsoft.com/en-us/library/ms187922.aspx)運算符定義爲帶三個參數。你正在尋找的是一個*條件*操作符 - 它發生*是唯一一個被大多數語言定義爲接受三個參數的操作符。 – 2015-12-08 11:11:54

+0

@JFA - 否,* a *三元運算符是任何需要三個操作數的運算符。在大多數語言中,*如果*他們有任何三元運算符,它們通常只有一個,即(通常)稱爲條件運算符。以錯誤的名稱來調用事物(或者當您指的是特定的名稱時使用通用名稱)可能會導致更多混淆。有關進一步的指導,請參閱[tag:ternary-operator]標籤wiki。 – 2016-07-08 18:26:45

+0

@Damien_The_Unbeliever https://en.wikipedia.org/wiki/Ternary_operation:請參閱「三元運算符」 – 2016-12-22 14:49:44

回答

81

使用case

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

在SQL Server ,你可以使用IIF function

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

還要注意:在T-SQL中,賦值(和比較)運算符只是=(而不是== - 這就是C#)