返回逗号分隔值SQL

时间:2013-12-17 09:57:17

标签: sql sql-server sql-server-2008

我有一个字段名称DAILYREPORT.WEATHERCONDITION,根据用户从他可用的天气复选框列表中选择的内容,可以将值保存为“1,2,3”或“1”或“2,4”。天气表包含他选择的天气列表

Weather Table

ID  Condition
----------

1   Sunny    
2   Cloudy
3 Fine    
4 Windy 

现在我需要一个查询,在'Sunny,Cloudy,Fine'

时将条件返回为DAILYREPORT.WEATHERCONDION=1,2,3

4 个答案:

答案 0 :(得分:4)

试试这个:

SELECT STUFF
(
     (select ',' + Condition
      from
      Weather
      where 
      ID in (1,2,3)
      FOR XML PATH('')
      ),1,1,''
)

答案 1 :(得分:2)

DECLARE @list VARCHAR(MAX)
SELECT @list = COALESCE(@list+',' ,'') + Condition
FROM Weather
WHERE ID IN (1,2,3)
SELECT @list

您声明@list类型的varchar变量。然后使用COALESCE表达式(请查看http://msdn.microsoft.com/en-us/library/ms190349.aspx以获取有关其工作原理的更多详细信息),即可获得所需内容。

这是一个SQL小提琴,表明上面的工作正如预期的那样

http://sqlfiddle.com/#!6/65df2/1

注意:为了避免任何误解,我不是说COALESCE解决了所述的问题。

  

只是在那里处理初始化字符串和问题   最后一个额外的逗号。

正如米卡尔在下面写的那样。

答案 2 :(得分:2)

我和克里希纳一样,

Declare @Weather Table (ID int, Condition varchar(50))
insert into @Weather values(1,'Sunny'),(2,'Cloudy'),(3,'Fine'),(4,'Windy')

select top 1
stuff((select ','+Condition from @Weather b where id in(1,2,3) for xml path('')),1,1,'')Condition

 from @Weather

答案 3 :(得分:0)

试试这个我希望它对你的

有用
select SUBSTRING(
(select ','+  s.condition from DAILYREPORT s where id in (1,2,3) order by condition for xml path('')),2,200000) as CSV