T-SQL에 삼항 조건 연산자가 있습니까?


112

다음 쿼리를 구현하는 대안은 무엇입니까?

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

4
물론 제목에서 제기하는 질문에 대한 답은 물론입니다. BETWEEN연산자는 세 개의 인수를 정의됩니다. 당신이 찾고 있던 것은이었다 조건 - 운영자 발생하는 대부분의 언어에 의해 정의 된 세 가지 인수를 정의하는 유일한 사업자가 될 수 있습니다.
Damien_The_Unbeliever

1
@JFA는 - 아니 삼원 연산자 세 피연산자를 임의의 오퍼레이터 없다. 대부분의 언어에서 삼항 연산자가있는 경우 일반적으로 하나만있는 것이 일반적입니다. 즉, 조건부 연산자라고합니다. 잘못된 이름 (또는 특정을 의미 할 때 일반적인 이름을 사용)으로 부르면 더 많은 혼란을 초래할 수 있습니다. 자세한 지침은 삼항 연산자 태그 위키 를 참조하십시오 .
Damien_The_Unbeliever

@Damien_The_Unbeliever en.wikipedia.org/wiki/Ternary_operation : "THE 삼항 연산자"참조
Timothy Kanski dec.

@TimothyKanski - 당신은 내용을 고려하고 (예에 특별한 중점을 배치하는 등 내 이전 코멘트의 스타일링, 생각 나는이 모르고있어 것을)?
Damien_The_Unbeliever

6
OP는 잘못되거나 너무 일반적인 이름이 아닌 일반적인 이름을 사용했습니다. 나는 이것이 실제로 일반적으로 사용되는 용어 일 때 (이 사이트를 구축 한) 전문가들이 이것에 대해 혼동 할 것이라는 귀하의 결론에 동의하지 않습니다.
Timothy Kanski

답변:


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 #이 =아닙니다.==

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.