select isnull(column1,'')+','+isnull(column2,'')+','+isnull(column3,'') AS column4 from table
从上面的查询中,我得到了我需要的东西,这真的很棒。但这里的事情是,如果所有列都NULL
我得到了逗号,我用它来分隔字段。
我希望当每个字段为NULL
时,逗号将替换为NULL
。任何人都可以帮助我吗?谢谢!
答案 0 :(得分:3)
您可以使用stuff()
这样执行此操作:
select stuff((coalesce(',' + col1, '') +
coalesce(',' + col2, '') +
coalesce(',' + col3, '')
), 1, 1, '')
其他数据库通常都有一个名为concat_ws()
的函数,也可以执行此操作。
答案 1 :(得分:3)
您可以将+ ','
打包到ISNULL()
select isnull(column1+',','')+isnull(column2+',','')+isnull(column3,'') AS column4 from table
答案 2 :(得分:2)
你可以使用CASE EXPRESSION:
SELECT CASE WHEN column1 is not null then column1 + ',' else '' end +
CASE WHEN column2 is not null then column2 + ',' else '' end +
CASE WHEN column3 is not null then column3 else '' end as column4
答案 3 :(得分:2)
首先计算名称中的空格数并将其添加到计数中,您将得到结果。如果需要,您还可以修剪字符串
declare @count as int
declare @spaceCount as int
select @count =(LEN('amjad habib'))
select @spaceCount =@count-LEN(REPLACE('amjad habib', ' ', ''))
SELECT SUBSTRING('amjad habib',1 , 8 + @spaceCount )