Damien McGivern
그는 물었다 11년 전
140

Sql Server 에서 약어입니다 상수입니다 있는 것은 1 또는 0

세상에 이런 일이 표현할 수 있는 비트 필드 값을 1 또는 0 으로 사용되어 select 문은?

예:

이 경우 문 (bn select 문의) 이쿠르제바스트 형식은 int.

case 
when FC.CourseId is not null then 1
else 0
end
as IsCoursedBased

좀 나라를 위해 두 값을 가질 수 있도록 afaq type I.

case 
when FC.CourseId is not null then cast(1 as bit)
else cast(0 as bit)
end
as IsCoursedBased

한편 이 유형에 값으로 표현하는 방법이 있지 않고 나라를 위해 짧은 약어입니다 때마다?

(# 39 m I& 사용하여, MS SQL Server 2005년)

답변 8 개

cast (
  case
    when FC.CourseId is not null then 1 else 0
  end
as bit)

Spec 이 &quot 캐스트 (CAST), (표현식에서는 유형) 이 ". 이 사건을 백업이었습니다 표현식에서는 컨텍스트입니다.

이런 표현을 여러 개 있을 경우, 비트 var @true 및 @false 및 사용 저들이요 너희가운데 I& # 39; d 당신이 정말로 사용하거나 UDFs 그들이성년에.

DECLARE @True bit, @False bit;
SELECT @True = 1, @False = 0;  --can be combined with declare in SQL 2008

SELECT
    case when FC.CourseId is not null then @True ELSE @False END AS ...

gbn
Shannon Severance
그는 11년 전 댓글을 달았습니다
1

니트, 다른 한 0&quot &quot 합니다. 5 행의.

Damien McGivern
그는 9년 전 댓글을 달았습니다
1

우리는 우리의 이용할 수 있도록 표준화된 코드를 보다 쉽게 읽을 때 참 / 거짓 선언된 변수는 SQL 과 약어입니다 익스플레스 필요하다.

gbn
그는 9년 전 댓글을 달았습니다
0

@Damien 매기번: 난 이미 너무 많은 방송 때 유용한 찾았어

두 번째 스니핏 필드로 에 대한 정의를 보기입니다 이쿠르제바스트 추가할 수 있습니다.

DECLARE VIEW MyView
AS
  SELECT
  case 
  when FC.CourseId is not null then cast(1 as bit)
  else cast(0 as bit)
  end
  as IsCoursedBased
  ...

SELECT ICourseBased FROM MyView

Dan
그는 6년 전 댓글을 달았습니다
0

하지만 단점도 가지고 있는 이 작품은 캐스트 () 가 NULL 유형:.

아니, 부성분 아닌 전체 표현식에서는 확장하지만 캐스팅 할 수 있는 표현식입니다. 이 경우, 그 때문에 실제로 판독값 적은 것이다.

스케쳐내 열의 비트, NOT NULL 전에 이누얼 동일팔레트에 합니다 "라고 언급했다.

ISNULL(
   CAST (
      CASE
         WHEN FC.CourseId IS NOT NULL THEN 1 ELSE 0
      END
    AS BIT)
,0) AS IsCoursedBased

39 에 비해 약간 더 압축됨 gbn&.

'가정' 는 코르사이드 비제

CAST (COALESCE(FC.CourseId, 0) AS Bit)

그러나 첫 번째 이누얼 () ',' '는' 등과 같은 가속 시 가용 되돌려줍니다 null 이 아닌.

비제 코르사이드 얻을 수 있으며, '한' 1 'null' 유형 캐스트 코르사이드 가속 시 가용 반환되기를 하면 다음 값을 0

나라를 위해 각 값마다 죄송합니다. 뛰시는군요 할 것이다.

표현식에서는 선택하여 사용할 수 있는

CAST(IIF(FC.CourseId IS NOT NULL, 1, 0) AS BIT)

ttarchala
happymacarts
그는 4년 전 댓글을 달았습니다
0

이 질문에 대한 링크를 제공할 수 있도록 더 유용하고 설명하란말야 또는 library/docs

Chait
그는 4년 전 댓글을 달았습니다
0

그래서 누구없어요 것을 환영합니다. 대답을 설명해 주십시오.

Fabio A.
그는 2년 전 댓글을 달았습니다
0

비록 [세프] (https://docs.microsoft.com/en-us/sql/t-sql/functions/logical-functions-iif-transact-sql? 보기 = sql server 2017년) 때 로켈이 '보다 더 좋아 보입니다. 할 수가 없어요. 아직 최종 ',' 1 '과' 0 '을 한 나라를 위해 약어입니다 유형:.

이 경험하십시오:) 캐스트 않고 각 값마다 것이다.

SELECT ...,
  IsCoursedBased = CAST(
      CASE WHEN fc.CourseId is not null THEN 1 ELSE 0 END
    AS BIT
  )
FROM fc