如果其中一行为null,如何将两个nvarchar行转换为一行

时间:2011-05-06 10:04:37

标签: sql database sql-server-2008

抱歉,如果这与现有问题之一重复(这很简单,但我无法弄明白,我是新手)。

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

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

我想做

SELECT Firstname + ' ' + LastName As Name FROM TableA 

但问题是在表B中,某些行对于firstname或lastname具有空值,但对于两者都没有(Lazy用户)。

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

从我所做的阅读中,这是预期的行为,但我该怎样做才能解决这个问题呢?

如果另一个为null,我想保存名字或姓氏。

4 个答案:

答案 0 :(得分:4)

SELECT RTRIM(LTRIM(ISNULL(Firstname ,'') + ' ' + ISNULL(LastName,''))) AS Name 
FROM TableA 

答案 1 :(得分:1)

这可以通过单个colaesce(返回第一个非null)&不需要乱用空间。

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

答案 2 :(得分:0)

使用coalesce或isnull

 select COALESCE(FirstNAme, '') + ' ' + COALESCE(LastName, '') as name from TableA

答案 3 :(得分:0)

SELECT isnull (Firstname, '') + ' ' isnull (LastName, '') as Name 
FROM TableA