T-SQL'de üçlü bir koşullu operatör var mı?


112

Aşağıdaki sorguyu uygulamak için alternatifler nelerdir:

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

4
Elbette başlığınızda sorduğunuz sorunun cevabı elbette. BETWEENOperatör üç argüman almaya tanımlanır. Ne aradığını bir oldu koşullu - operatörü olur çoğu dil ile tanımlanan üç argüman almaya tanımlanan tek operatör olmak.
Damien_The_Unbeliever

1
@JFA - hayır, bir Üçlü operatör üç işlenen alır herhangi operatörüdür. Çoğu dilde, eğer herhangi bir üçlü operatörleri var, (genellikle) 'dir sadece birine sahip olduğunu' s yaygın, koşullu operatör çağırdı. Bir şeyleri yanlış isimle çağırmak (veya belirli bir ismi kastettiğinizde genel bir isim kullanmak) sadece daha fazla kafa karışıklığına yol açabilir. Daha fazla rehberlik için lütfen üçlü operatör etiketi wiki'sine bakın.
Damien_The_Unbeliever

@Damien_The_Unbeliever en.wikipedia.org/wiki/Ternary_operation : bkz. "THE
Ternary

@TimothyKanski - içerik dikkate ve (örneğin üzerine özel bir vurgu olarak benim önceki yorumların stil, sizce a bu Haberim)?
Damien_The_Unbeliever

6
OP bir şey için ortak adı kullandı, yanlış veya çok genel adını değil. Terminoloji gerçekten yaygın olarak kullanıldığı zaman, profesyonellerin (bu sitenin kimler için inşa edildiği) bununla karıştırılacağı sonucuna katılmıyorum.
Timothy Kanski

Yanıtlar:


122

Kullanım case:

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

165

SQL Server 2012'de şu IIFişlevi kullanabilirsiniz :

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

Ayrıca not: T-SQL'de, atama (ve karşılaştırma) operatörü sadece =(ve değil ==- bu C #)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.