Sql 当其中一行为空时,如何将两个nvarchar行转换为一行
对不起,如果这是一个重复的现有问题之一(它是如此简单,但我不能弄清楚,我是新的) 我需要将一些数据从一个表迁移到另一个表(不同的结构) 表A有Firstname和LastName列。 表B包含名称列 我想做什么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
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