Quali sono le alternative per attuare la seguente query:Esiste un operatore ternario in T-Sql?
select *
from table
where isExternal = @type = 2 ? 1 : 0
Quali sono le alternative per attuare la seguente query:Esiste un operatore ternario in T-Sql?
select *
from table
where isExternal = @type = 2 ? 1 : 0
Uso case
:
select *
from table
where isExternal = case @type when 2 then 1 else 0 end
In SQL Server , è possibile utilizzare il IIF
function:
SELECT *
FROM table
WHERE isExternal = IIF(@type = 2, 1, 0)
noti inoltre : in T-SQL, l'operatore di assegnazione (e confronto) è solo =
(e non ==
- questo è C#)
Ovviamente, la risposta alla domanda che poni nel titolo è - ovviamente. L'operatore ['BETWEEN'] (https://msdn.microsoft.com/en-us/library/ms187922.aspx) è definito per accettare tre argomenti. Quello che stavi cercando era un operatore * condizionale * - che * accade * per essere l'unico operatore definito a prendere tre argomenti definiti dalla maggior parte delle lingue. –
@ JFA - no, * un * operatore ternario è un operatore che accetta tre operandi. Nella maggior parte delle lingue, * se * hanno operatori ternari, è comune che ne abbiano solo uno, che è (generalmente) chiamato operatore condizionale. Chiamare le cose con il nome sbagliato (o usare un nome generico quando intendi uno specifico) può solo portare a maggiore confusione. Per ulteriori indicazioni, consultare il tag [tag: ternary-operator] wiki. –
@Damien_The_Unbeliever https://en.wikipedia.org/wiki/Ternary_operation: vedi "THE ternary operator" –