Sql 当其中一行为空时,如何将两个nvarchar行转换为一行

Sql 当其中一行为空时,如何将两个nvarchar行转换为一行,sql,database,sql-server-2008,Sql,Database,Sql Server 2008,对不起,如果这是一个重复的现有问题之一(它是如此简单,但我不能弄清楚,我是新的) 我需要将一些数据从一个表迁移到另一个表(不同的结构) 表A有Firstname和LastName列。 表B包含名称列 我想做什么 SELECT Firstname + ' ' + LastName As Name FROM TableA 但问题是在表B中,有些行的firstname或lastname的值为null,但不是两者都为null(Lazy user) 当我将它们导入表B时,查询失败,因为在我的新设计中N

对不起,如果这是一个重复的现有问题之一(它是如此简单,但我不能弄清楚,我是新的)

我需要将一些数据从一个表迁移到另一个表(不同的结构)

表A有Firstname和LastName列。 表B包含名称列

我想做什么

SELECT Firstname + ' ' + LastName As Name FROM TableA 
但问题是在表B中,有些行的firstname或lastname的值为null,但不是两者都为null(Lazy user)

当我将它们导入表B时,查询失败,因为在我的新设计中Name列不可为null,并且当我测试上述语句时,如果firstname或lastname为null,则concated值为null

从我所做的阅读来看,这是预期的行为,但我能做些什么来避免这种情况

如果另一个为null,我想保存firstname或lastname。

使用coalesce或isnull

SELECT RTRIM(LTRIM(ISNULL(Firstname ,'') + ' ' + ISNULL(LastName,''))) AS Name 
FROM TableA 
 select COALESCE(FirstNAme, '') + ' ' + COALESCE(LastName, '') as name from TableA

这可以用一个colaesce(首先返回非null)来完成&不需要乱用空格

select 
  coalesce(firstname + ' ' + lastname, firstname, lastname)
from TableA
select 
  coalesce(firstname + ' ' + lastname, firstname, lastname)
from TableA