2017-02-21 120 views
1

我有表包含地址1,地址2,地址3等...其中值可以为空或空。与分隔符连接多个字段

我正在通过将这些字段连接成一个完整的地址。

Select Column1, Column2, ISNULL(Address1,'') + ', ' + ISNULL(Address2,'')+ ', ' + ISNULL(Address3,'') As FullAddress 
from TableName 

问题是如果address1为null,但它仍附加我想要删除的','。所以落得像“ address2value”

有没有更好的做这个

回答

1

这是否做你心目中的方式?

Select Column1, 
     Column2, 
     ISNULL(Address1+',','') + ISNULL(Address2+',','')+ISNULL(Address3,'') As FullAddress 
from TableName 

结果:

enter image description here

+0

是的,但如果Address3为空,它将在地址末尾留下',' – mrTester

+1

您可以使用以下链接生成ascii艺术表https://senseful.github.io/web-tools/text-table/ –

+0

很好,谢谢分享 – WilliamD

2

如果你不想尾随或领先的逗号,你可以这样做:

Select Column1, Column2, 
     STUFF(COALESCE(', ' + Address1, '') + COALESCE(', ' + Address2, '') + COALESCE(', ' + Address3, ''), 
      1, 2, '') As FullAddress 
from TableName; 
0

如果任何地址1或1地址或地址3包含Null ,它不会添加分隔符

SELECT Column1, Column2, CONCAT_WS(',',IFNULL(Address1,NULL),IFNULL(Address2,NULL),IFNULL(Address3,NULL)) AS FullAddress 
FROM TableName; 
+0

SQL Server ....................... –