명세서 IF...THEN
내에서 어떻게 수행 SQL SELECT
합니까?
예를 들면 다음과 같습니다.
SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product
답변
이 CASE
명령문은 SQL에서 IF에 가장 가깝고 모든 버전의 SQL Server에서 지원됩니다.
SELECT CAST(
CASE
WHEN Obsolete = 'N' or InStock = 'Y'
THEN 1
ELSE 0
END AS bit) as Saleable, *
FROM Product
CAST
결과를 부울 값으로 원하는 경우 에만 수행하면 됩니다. 에 만족하면 다음과 int
같이 작동합니다.
SELECT CASE
WHEN Obsolete = 'N' or InStock = 'Y'
THEN 1
ELSE 0
END as Saleable, *
FROM Product
CASE
문은 다른 CASE
문에 포함되거나 집계에 포함될 수도 있습니다.
SQL Server Denali (SQL Server 2012)는 IIF 문을 추가하여 액세스 할 수 있습니다 ( Martin Smith가 지적함 ).
SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product
답변
이 상황에 대한 사례 진술은 귀하의 친구이며 다음 두 가지 형식 중 하나를 취합니다.
간단한 경우 :
SELECT CASE <variable> WHEN <value> THEN <returnvalue>
WHEN <othervalue> THEN <returnthis>
ELSE <returndefaultcase>
END AS <newcolumnname>
FROM <table>
확장 사례 :
SELECT CASE WHEN <test> THEN <returnvalue>
WHEN <othertest> THEN <returnthis>
ELSE <returndefaultcase>
END AS <newcolumnname>
FROM <table>
멋진 주문을 위해 case by 절에 case 문을 넣을 수도 있습니다.
답변
SQL Server 2012 에서이 IIF
기능 을 사용할 수 있습니다 .
SELECT IIF(Obsolete = 'N' OR InStock = 'Y', 1, 0) AS Salable, *
FROM Product
이것은 사실상 (간단한 SQL은 아니지만) 쓰는 간단한 방법입니다 CASE
.
확장 CASE
버전 과 비교할 때 간결함을 선호합니다 .
모두 IIF()
와 CASE
SQL 문 내에서 식으로 해결 만 잘 정의 된 장소에서 사용할 수 있습니다.
CASE 식을 사용하여 Transact-SQL 문의 실행 흐름, 명령문 블록, 사용자 정의 함수 및 저장 프로 시저를 제어 할 수 없습니다.
이러한 제한 사항으로 요구 사항을 충족 할 수없는 경우 (예 : 일부 조건에 따라 다른 모양의 결과 집합을 반환해야하는 경우) SQL Server에도 절차 IF
키워드가 있습니다.
IF @IncludeExtendedInformation = 1
BEGIN
SELECT A,B,C,X,Y,Z
FROM T
END
ELSE
BEGIN
SELECT A,B,C
FROM T
END
답변
The Power of SQL CASE Statements 에서 멋진 예제를 찾을 수 있으며 사용할 수 있는 명령문은 다음과 같습니다 ( 4guysfromrolla ).
SELECT
FirstName, LastName,
Salary, DOB,
CASE Gender
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
END
FROM Employees
답변
CASE를 사용하십시오. 이 같은.
SELECT Salable =
CASE Obsolete
WHEN 'N' THEN 1
ELSE 0
END
답변
SELECT
(CASE
WHEN (Obsolete = 'N' OR InStock = 'Y') THEN 'YES'
ELSE 'NO'
END) as Salable
, *
FROM Product
답변
Microsoft SQL Server (T-SQL)
에서 다음 select
을 사용하십시오.
select case when Obsolete = 'N' or InStock = 'Y' then 'YES' else 'NO' end
A의 where
절, 사용 :
where 1 = case when Obsolete = 'N' or InStock = 'Y' then 1 else 0 end