SQL Server에서 상수 1 또는 0으로 비트 암시
select 스테이트먼트에서 필드 값으로 사용할 때 1 또는 0을 비트로 표현할 수 있습니까?
예.
이 경우 (select 스테이트먼트의 일부)ICourseBased는 int 타입입니다.
case
when FC.CourseId is not null then 1
else 0
end
as IsCoursedBased
비트 타입이 되려면 두 가지 값을 모두 캐스팅해야 합니다.
case
when FC.CourseId is not null then cast(1 as bit)
else cast(0 as bit)
end
as IsCoursedBased
매번 캐스트를 하지 않고 비트 타입으로 값을 표현하는 간단한 방법이 있습니까?
(MS SQL Server 2005를 사용하고 있습니다)
cast (
case
when FC.CourseId is not null then 1 else 0
end
as bit)
CAST 사양은 "CAST(expression AS type)"입니다.CASE는 이 컨텍스트의 표현입니다.
이러한 표현이 여러 개 있는 경우 비트 값 @true 및 @false를 선언하여 사용합니다.정말 원한다면 UDF를 사용할 수도 있습니다.
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 ...
뷰에서 두 번째 스니펫을 ICourseBased 필드 정의로 추가할 수 있습니다.
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
아니요, 하지만 그 표현의 하위 구성 요소보다는 전체 표현식을 캐스팅할 수 있습니다.사실, 이 경우엔 아마 읽기 어려울 겁니다.
gbn보다 약간 더 압축됨:
가정하다CourseId
0이 아니다
CAST (COALESCE(FC.CourseId, 0) AS Bit)
COALESCE
와 같다ISNULL()
단, Null 이외의 첫 번째 값은 반환됩니다.
0이 아닌 것CourseId
타입캐스트는 1이 됩니다만, null은 null입니다.CourseId
COALESCE는 다음 값 0을 반환합니다.
열을 NULL이 아닌 BIT로 하려면 CAST 앞에 ISULL을 붙여야 합니다.
ISNULL(
CAST (
CASE
WHEN FC.CourseId IS NOT NULL THEN 1 ELSE 0
END
AS BIT)
,0) AS IsCoursedBased
SELECT 내에서 사용하는 표현은 다음과 같습니다.
CAST(IIF(FC.CourseId IS NOT NULL, 1, 0) AS BIT)
불행하게도, 아니다.각각의 값을 개별적으로 캐스팅해야 합니다.
테스트 완료 및 기능
SELECT fc.CourseId, IsCoursedBased = CAST(CASE WHEN fc.CourseId IS NOT NULL THEN 1 ELSE 0 END AS BIT)
FROM fc
언급URL : https://stackoverflow.com/questions/1172795/imply-bit-with-constant-1-or-0-in-sql-server
'source' 카테고리의 다른 글
다중 부품 식별자를 바인딩할 수 없습니다. (0) | 2023.04.07 |
---|---|
SQL Server에서 외부 키를 작성하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
Django 템플릿에서 키로 사전 액세스 (0) | 2023.04.02 |
Spring Boot에서 '로그아웃' 기능 구현 (0) | 2023.04.02 |
Oracle SQL Developer를 사용하여 데이터를 내보내는 방법 (0) | 2023.04.02 |