如何使用coalesce而不是IS NULL>

时间:2014-12-15 18:25:11

标签: sql sql-server database

我不知道如何通过以下方式获取:

SELECT 
    AddressLine1 + ', ' + AddressLine2 AS Address,  
    City  
FROM
    [Person].[Address] 
WHERE 
    [AddressLine1] is not null 
    AND [AddressLine2] is not null

我需要使用COALESCE()功能。每次我尝试它都会出错。我应该如何使用coalesce()来获得相同的内容?

2 个答案:

答案 0 :(得分:4)

你做不到。 COALESCE是一个返回第一个非空值的函数。

我认为你打算写这个查询:

SELECT AddressLine1 +', '+ AddressLine2 AS Address, City FROM [Person].[Address] 
WHERE COALESCE([AddressLine1], [AddressLine2]) is not null

它具有与以下相同的效果:

SELECT AddressLine1 +', '+ AddressLine2 AS Address, City FROM [Person].[Address] 
WHERE [AddressLine1] is not null OR [AddressLine2] is not null

此查询中的OR与您的AND之间的差异很小,但非常重要。除此之外,它没有更短,更快或更好的可读性,所以我不认为这是COALESCE的一个很好的用例。

答案 1 :(得分:0)

据推测,你想要这样的东西:

SELECT COALESCE(AddressLine1, '') +', '+ COALESCE(AddressLine2, '') AS Address, City
FROM [Person].[Address];

这样,即使值为NULL,您也可以进行字符串连接。