programing

SQL Server 인라인(그렇지 않은 경우)

i4 2023. 8. 19. 09:45
반응형

SQL Server 인라인(그렇지 않은 경우)

내 표에서 나는 값이 0인지 1인지를 나타내는 열을 얻었습니다.해당 열이 0이면 값을 '아니오'로 출력하고, 1이면 모든 행에 대해 '예'로 출력해야 합니다.SQL 문만 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?감사해요.

이 질문("sql server inline if"에 대한 구글 결과 상단에 표시됨)이 2년 된 것으로 알고 있지만 SQL Server 2012에서는 답이 다소 구식입니다.또한유형 질문인 경우 SQL 인라인의 복제로 보이지만, 해당 질문(더 오래된 질문)에도 최신 답변이 없습니다.

SQL Server 2012에서는 다음 기능을 사용할 수 있습니다.

IIF ( boolean_expression, true_value, false_value )

예:

SELECT IIF(someColumn = 1, 'yes', 'no')

SQL Server에 인라인이 없습니다.if문. 그러나 동일한 작업을 수행하는 데 사용할 수 있는 인라인이 있습니다.

대소문자는 두 가지 형태가 있습니다. 하나는 다음과 같습니다.

select 
 case MyFlag 
   when 1 then 'YES'
   when 0 then 'NO'
   else 'OOPS'
 end
from MyTable

C와 유사한 언어로 스위치처럼 사용되며 다른 하나는 다음과 같습니다.

select 
 case 
   when MyFlag = 1 then 'YES'
   when MyFlag = 0 then 'NO'
   -- when some unrelated condition...
   else 'OOPS'
 end
from MyTable

여기서 조건 목록을 순차적으로 평가하고 첫 번째로 충족된 조건을 반환합니다.

추신: 더end파트는 필수이고, 저는 보통 그것을 잊어버립니다.심플한 것도 일반적입니다.case완전히 인라인화된 진술, 예를 들어봐요.

select (case MyFlag when 1 then 'Yes' else 'No' end) as MyFlagDesc

두 가지 가능성:

(CASE WHEN condition1 THEN Value1 ELSE Value2 END)

또는 가장 완벽한 솔루션:

(CASE value_to_check WHEN Value1 THEN Result1 [WHEN ... THEN ...] ELSE OtherResult END)

이와 같은 것:

SELECT 
    CASE YourColumn
       WHEN 0 THEN 'no'
       WHEN 1 THEN 'yes'
       ELSE 'nothing'
    END
FROM dbo.YourTable

한 줄에 세 개의 IIF를 섞었습니다. 세 개의 변수가 있습니다. 어떤 변수가 0보다 큰지 알고 싶지만 우선 순위를 알고 있습니다.ID, 사용자 업무용 전화ID 및 사용자 휴대폰 ID

IIF(@PersonHomePhoneID > 0 , @PersonHomePhoneID, IIF(@PersonWorkPhoneID > 0 , @PersonWorkPhoneID, IIF(@PersonCellPhoneID > 0 , @PersonCellPhoneID, 0))) 

질문의 답은 다음과 같습니다.

IIF(column = 1 , 'yes', IIF(column = 0, 'no', ''))

언급URL : https://stackoverflow.com/questions/6608102/sql-server-inline-if-else

반응형