在sql中检索时间为NULL特定字段

时间:2016-03-07 12:06:00

标签: sql sql-server

select isnull(column1,'')+','+isnull(column2,'')+','+isnull(column3,'') AS column4 from table  

从上面的查询中,我得到了我需要的东西,这真的很棒。但这里的事情是,如果所有列都NULL我得到了逗号,我用它来分隔字段。

我希望当每个字段为NULL时,逗号将替换为NULL。任何人都可以帮助我吗?谢谢!

4 个答案:

答案 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 )