连接来自两个字段的数据,忽略其中一个中的NULL值?

Sum*_*jee 2 sql sql-server sql-server-2008

数据集如下:

FirstName          LastName       city      street        housenum
john            silver            london   ukitgam         780/19
gret            garbo             berlin   akstrass         102
le              chen             berlin    oppenhaim        NULL
daniel          defo             rome      corso vinchi     25
maggi           forth           london     bolken str      NULL
voich           lutz            paris      pinchi platz     NULL
anna           poperplatz        milan     via domani       15/4
Run Code Online (Sandbox Code Playgroud)

写下面的查询:

SELECT Trim(a.FirstName) & ' ' & Trim(a.LastName) AS employee_name,
a.city, a.street + ' ' + a.housenum AS address
FROM Employees AS a 
Run Code Online (Sandbox Code Playgroud)

结果如下:

employee_name        city          address
john silver         london       ukitgam 780/19
gret garbo          berlin       akstrass 102
le chen             berlin       NULL
daniel defo         rome        corso vinchi 25
maggi forth         london       NULL
voich lutz          paris        NULL
anna poperplatz     milan      via domani 15/4
Run Code Online (Sandbox Code Playgroud)

但我想要这个:

employee_name           city                  address
john silver            london               ukitgam 780/19
gret garbo             berlin               akstrass 102
le chen                berlin               oppenhaim
daniel defo            rome                corso vinchi 25
maggi forth            london              bolken str
voich lutz             paris               pinchi platz
anna poperplatz        milan             via domani 15/4
Run Code Online (Sandbox Code Playgroud)

请帮我.

Mud*_*san 5

只需对列使用ISNULL()函数housenum.

SELECT Trim(a.FirstName) & ' ' & Trim(a.LastName) AS employee_name,
a.city, a.street + ' ' + ISNULL(a.housenum,'') AS address
FROM Employees AS a 
Run Code Online (Sandbox Code Playgroud)

当你得到的地址作为NULL housenum列值为NULL,因为NULL与任何东西连接起来给NULL作为最终结果.

正如在其他答案中发布的那样,您也可以使用COALESCE()来处理NULL值.

COALESCE符合SQL '92标准,并受更多不同数据库的支持.另一方面,ISNULL()仅在SQL Server中提供,因此不太可移植.