다른 열이 null인지 반환하는 계산 된 비트 열
-
13-09-2019 - |
문제
이 계산 된 열을 갖기 위해 노력합니다.
CREATE TABLE dbo.Item
(
ItemId int NOT NULL IDENTITY (1, 1),
SpecialItemId int NULL,
--I tried this
IsSpecialItem AS ISNULL(SpecialItemId, 0) > 0,
--I tried this
IsSpecialItem AS SpecialItemId IS NOT NULL
--Both don't work
) ON [PRIMARY]
해결책
이것은 작동합니다 :
CREATE TABLE dbo.Item
(
ItemId int NOT NULL IDENTITY (1, 1),
SpecialItemId int NULL,
IsSpecialItem AS
CAST(CASE ISNULL(SpecialItemId, 0) WHEN 0 THEN 0 ELSE 1 END AS bit)
)
다른 팁
마크 바이어의 대답 오류가 발생합니다 nvarchar
열, 칼럼이 있는지 여부에 관계없이 다음 작업 int
또는 nvarchar
:
CREATE TABLE dbo.Item
(
ItemId int NOT NULL IDENTITY (1, 1),
SpecialItemId [nvarchar](50) NULL,
CAST(CASE WHEN SpecialItemId Is NULL THEN 0 ELSE 1 END AS bit)
AS IsSpecialItem
)
SQL Server는 기본 True 부울 데이터 유형이 없습니다 (부울 표현식 대신 변수를 사용할 수 있다는 의미에서 select * from Item where IsSpecialItem
). 당신이 그것을 표현할 수있는 유일한 방법은 Mark가 제안한 것과 같은 것으로 예약 된 값을 사용하는 것입니다 (이 경우 쿼리는 다음과 같습니다. select * from Item where IsSpecialItem = 1
).
제휴하지 않습니다 StackOverflow