sql与空白单元格的串联

时间:2019-02-26 12:48:52

标签: sql sql-server

所以我正在将数据从一个表提取到另一个表

SELECT *            

        LTRIM(ADRESSE + ',' + ADRESSE2)  AS ADDRESS12

FROM [Homestore].[dbo].[CLIENT]

问题是,如果单元格为空白,我仍然会收到逗号, 我尝试使用&而不是+,但是nvarchar在'&'运算符中不兼容。有什么想法我只在有连接的情况下才插入逗号吗?

3 个答案:

答案 0 :(得分:3)

您希望在其他数据库中使用CONCAT_WS()。您可以使用STUFF()和SQL Server中的一些字符串逻辑来做到这一点:

SELECT c.*
       STUFF( (COALESCE(',' + ADRESSE, '') +
               COALESCE(',' + ADRESSE2, '') +
              ), 1, 1, ''
             ) AS ADDRESS12
FROM [Homestore].[dbo].[CLIENT] c;

此结构很方便,因为您可以为更多列添加更多COALESCE()表达式。

答案 1 :(得分:0)

使用case表达式

SELECT *, LTRIM(ADRESSE + case when ADRESSE is not null then ',' end + ADRESSE2)  AS ADDRESS12
FROM [Homestore].[dbo].[CLIENT]

答案 2 :(得分:0)

使用case when进行空检查

 SELECT *            

            LTRIM(ADRESSE + case when ADRESSE2 is not null then
   ',' else '' end + ADRESSE2)  AS ADDRESS12

    FROM [Homestore].[dbo].[CLIENT]