如何有条件地返回一个或另一个领域?

时间:2016-08-14 16:50:44

标签: sql sql-server

我有一张Customer表。此表格包含字段FirstNameLastNameCompanyName。业务逻辑是,如果CompanyName存在任何值,则查询应返回CompanyName,否则,如果CompanyNameNULL或为空,则应返回FirstNameLastName的组合。

我现在所拥有的只是......

select ID, (FirstName + ' ' + LastName) as EntityName from Customer

select ID, (CompanyName) as EntityName from Customer

如何根据select是否存在值来编写此类EntityName查询以返回CompanyName中的一个或哪一个?

3 个答案:

答案 0 :(得分:4)

您可以使用COALESCE()

select ID, COALESCE(CompanyName, FirstName + ' ' + LastName) as EntityName
from Customer;

这假定NULL值表示缺少CompanyName。否则,您将使用具有适当逻辑的CASE

答案 1 :(得分:3)

Select ID
      ,EntityName = case when Isnull(CompanyName,'') <>'' then CompanyName  else FirstName + ' ' + LastName end
 From Customer

答案 2 :(得分:1)

COALESCE()不适用于空字符串。因此,您可以依赖“大小写”语句,并对名字和姓氏列进行 null 检查,以保持结果有效。 如果这些列中的任何一个包含空值,则整个结果将为null。

Select ID
      ,EntityName = CASE WHEN ISNULL(CompanyName,'') ='' 
                         THEN ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'')  --if company name is null or empty will take the combination of firstname and last name
                    ELSE CompanyName END 
From Customer