抱歉,如果这与现有问题之一重复(这很简单,但我无法弄明白,我是新手)。
我需要将一些数据从一个表迁移到另一个表(不同的结构)。
表A包含Firstname和LastName列。 表B有名称列
我想做
SELECT Firstname + ' ' + LastName As Name FROM TableA
但问题是在表B中,某些行对于firstname或lastname具有空值,但对于两者都没有(Lazy用户)。
当我将它们导入表B时,查询失败,因为在我的新设计中Name列不可为空,当我测试上面的语句时,如果firstname或lastname为null,则concated值为null。
从我所做的阅读中,这是预期的行为,但我该怎样做才能解决这个问题呢?
如果另一个为null,我想保存名字或姓氏。
答案 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