Jakie są alternatywy do wdrożenia następujące zapytanie:Czy w T-Sql jest operator trójskładnikowy?
select *
from table
where isExternal = @type = 2 ? 1 : 0
Jakie są alternatywy do wdrożenia następujące zapytanie:Czy w T-Sql jest operator trójskładnikowy?
select *
from table
where isExternal = @type = 2 ? 1 : 0
Korzystając case
:
select *
from table
where isExternal = case @type when 2 then 1 else 0 end
W SQL Server , można użyć IIF
function:
SELECT *
FROM table
WHERE isExternal = IIF(@type = 2, 1, 0)
Należy również zauważyć, : w T-SQL operator przypisania (i porównania) to tylko =
(a nie ==
- to C#)
Oczywiście, odpowiedź na pytanie, które stawiasz w swoim tytule, brzmi - oczywiście. Operator ['BETWEEN'] (https://msdn.microsoft.com/en-us/library/ms187922.aspx) jest zdefiniowany w celu podjęcia trzech argumentów. To, czego szukałeś, to operator * warunkowy * - który * zdarza się * być jedynym operatorem, który zdefiniował trzy argumenty zdefiniowane przez większość języków. –
@JFA - nie, * a * operator potrójny to dowolny operator, który pobiera trzy operandy. W większości języków, * jeśli * mają operatorów trójskładnikowych, powszechne jest, że mają tylko jeden, czyli (ogólnie) nazywane operatorem warunkowym. Wywoływanie rzeczy za pomocą niewłaściwego nazwiska (lub używanie ogólnej nazwy, gdy masz na myśli konkretną osobę) może po prostu doprowadzić do większego zamieszania. Aby uzyskać dalsze wskazówki, zapoznaj się z wiki tagu [tag: ternary-operator]. –
@Damien_The_Unbeliever https://en.wikipedia.org/wiki/Ternary_operation: patrz "Ternary operator" –