如何使用 TSQL 中的 CASE WHEN 返回 true 或 false

9

我试图根据一个 T-SQL 的 CASE WHEN THEN 语句返回 true 或 false,但是结果面板中唯一显示的是列名 "IsGeneric"。

我哪里做错了?

alter proc Storefront.proc_IsProjectGeneric

@ProjectID INT
AS
SET NOCOUNT ON;

SELECT 'IsGeneric'=CASE WHEN p.[GenericCatalogID] > 0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END
                 FROM Storefront.Project p WITH(NOLOCK)
                 WHERE p.ID = @ProjectID;

SET NOCOUNT OFF;
2个回答

23

你在标识符周围使用了撇号,这使其成为了一个字符串。

SELECT IsGeneric = CASE WHEN p.[GenericCatalogID] > 0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END
             FROM Storefront.Project p WITH(NOLOCK)
             WHERE p.ID = @ProjectID;

10
SELECT CASE WHEN p.[GenericCatalogID] > 0 
            THEN CAST(1 AS BIT) 
            ELSE CAST(0 AS BIT) 
       END as IsGeneric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接