我有一张Customer
表。此表格包含字段FirstName
,LastName
和CompanyName
。业务逻辑是,如果CompanyName
存在任何值,则查询应返回CompanyName
,否则,如果CompanyName
为NULL
或为空,则应返回FirstName
和LastName
的组合。
我现在所拥有的只是......
select ID, (FirstName + ' ' + LastName) as EntityName from Customer
或
select ID, (CompanyName) as EntityName from Customer
如何根据select
是否存在值来编写此类EntityName
查询以返回CompanyName
中的一个或哪一个?
答案 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