문제

이 계산 된 열을 갖기 위해 노력합니다.

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).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top