T-SQL中是否存在三元条件运算符?


112

什么是实现以下查询的替代方法:

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

4
当然,您在标题中提出的问题的答案是-当然。该BETWEEN操作被定义为三个参数。您正在寻找的是一个条件运算符-它恰好是定义为接受大多数语言定义的三个参数的唯一运算符。
Damien_The_Unbeliever 2015年

1
@JFA -不,一个三元运算符是任何运营商是三个操作数。在大多数语言中,如果它们具有任何三元运算符,通常只有一个,即(通常)称为条件运算符。用错误的名称调用事物(或在使用特定名称时使用通用名称)只会导致更多的混乱。有关更多指导,请查阅三元运算符标签Wiki。
Damien_The_Unbeliever '16

@Damien_The_Unbeliever en.wikipedia.org/wiki/Ternary_operation:请参阅“三元运算符”
Timothy

@TimothyKanski-考虑到我之前不知道的内容和我以前的评论的风格(例如,特别强调a),您认为吗?
Damien_The_Unbeliever

6
OP使用事物的通用名称,而不是错误或过于通用的名称。我不同意您的结论,即当专业人士(确实是本网站的构建者)确实是常用术语时,会对此感到困惑。
蒂莫西·坎斯基

Answers:


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#)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.