繁体   English   中英

在 T-SQL 中返回 1 或 0 而不是 value 或 null

[英]Returning 1 or 0 instead of value or null in T-SQL

在我的SELECT语句中,我连接了两个表。 Table2中可能没有相应的值,在这种情况下,我的SELECT语句应该为该列返回NULL 我想要做的是,不是返回来自Table2的实际值,而是返回 1。

我以为我可以为此使用ISNULL但该函数旨在返回实际值(如果存在)。

这是我的SELECT语句的样子:

SELECT a.Id, ISNULL(b.PersonId, 0)
FROM Table1 AS a
   LEFT OUTER JOIN Table2 AS b ON a.Id = b.Id

这里PersonId列是UNIQUEIDENTIFIER类型,我不想返回Guid或 0。相反,我想返回 1 或 0。

我该如何处理这种情况?

我认为您正在寻找CASE EXPRESSION在这里。

SELECT a.Id, CASE WHEN b.PersonId IS NOT NULL THEN 1 ELSE 0 END
FROM Table1 AS a
LEFT OUTER JOIN Table2 AS b ON a.Id = b.Id

除了@DaleK 的出色回答,另一种选择是使用EXISTS

SELECT
    a.Id,
    CASE WHEN EXISTS (SELECT 1
        FROM Table2 AS b
        WHERE a.Id = b.Id)
     THEN 1 ELSE 0 END
FROM Table1 AS a

需要注意的是语义不同,这里,因为它是一个半连接:行不被复制,如果有多个匹配Table2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM