这应该是一件容易的事,但我似乎不断获得额外的空间。基本上我要做的是将多列组合成一列。但是这些列中的每一列也可能为空。当我将它们组合起来时,我也希望它们用空格('')分隔。
我创建的是以下查询:
select 'All'= ISNULL(Name+' ','')+ISNULL(City+' ','')+ISNULL(CAST(Age as varchar(50))+' ','') from zPerson
结果是:
All
John Rock Hill 23
Munchen 29
Julie London 35
Fort Mill 27
Bob 29
如您所见:名称为null时有一个额外的空格。我不希望这样。
初始表是:
id Name City Age InStates AllCombined
1 John Rock Hill 23 1 NULL
2 Munchen 29 0 NULL
3 Julie London 35 0 NULL
4 Fort Mill 27 1 NULL
5 Bob 29 1 NULL
有什么想法吗?
答案 0 :(得分:3)
select 'All'= LTRIM(ISNULL(Name+' ','')+ISNULL(City+' ','')+ISNULL(CAST(Age as varchar(50))+' ','') from zPerson)
答案 1 :(得分:2)
在您发布的数据中,Name
列不包含NULL。相反,它包含空字符串,因此ISNULL(Name+' ','')
将转换为单个空格。
最简单的解决方案是更改数据,以便空字符串为空。这在你的情况下是合适的,因为这显然是你的意图。
UPDATE zPerson SET Name=NULL WHERE Name=''
如有必要,请对City
和Age
字段重复此操作。
答案 2 :(得分:0)