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
'programing' 카테고리의 다른 글
유니코드 문자를 표시하는 Windows 명령 셸이 있습니까? (0) | 2023.08.19 |
---|---|
한 페이지 아래로 스크롤하는 동안 URL을 변경할 수 있습니까? (0) | 2023.08.19 |
Spring Boot + Security + Thymeleaf 및 CSRF 토큰이 자동으로 주입되지 않음 (0) | 2023.08.19 |
외부 키를 사용하는 MariaDB 내부 조인은 키를 사용하지 않는 것보다 훨씬 느립니다. (0) | 2023.08.19 |
SQL*Plus에서 create 문 중간에 빈 줄이 있는 뷰/테이블을 생성하려면 어떻게 해야 합니까? (0) | 2023.08.19 |