我不知道如何通过以下方式获取:
SELECT
AddressLine1 + ', ' + AddressLine2 AS Address,
City
FROM
[Person].[Address]
WHERE
[AddressLine1] is not null
AND [AddressLine2] is not null
我需要使用COALESCE()
功能。每次我尝试它都会出错。我应该如何使用coalesce()
来获得相同的内容?
答案 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
,您也可以进行字符串连接。