所以我正在将数据从一个表提取到另一个表
SELECT *
LTRIM(ADRESSE + ',' + ADRESSE2) AS ADDRESS12
FROM [Homestore].[dbo].[CLIENT]
问题是,如果单元格为空白,我仍然会收到逗号, 我尝试使用&而不是+,但是nvarchar在'&'运算符中不兼容。有什么想法我只在有连接的情况下才插入逗号吗?
答案 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]