Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回逗号分隔的SQL值_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

返回逗号分隔的SQL值

返回逗号分隔的SQL值,sql,sql-server,sql-server-2008,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 现在我需要一个查询,当DAILYREPORT.weathercondition=1,2,3 DECLARE @list VARCHA

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

Weather Table

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

1   Sunny    
2   Cloudy
3 Fine    
4 Windy 
现在我需要一个查询,当
DAILYREPORT.weathercondition=1,2,3

DECLARE @list VARCHAR(MAX)
SELECT @list = COALESCE(@list+',' ,'') + Condition
FROM Weather
WHERE ID IN (1,2,3)
SELECT @list
您声明了
varchar
类型的
@list
变量。然后使用
COALESCE
表达式(请查看此处了解其工作原理的更多详细信息),您将得到您想要的

这是一个SQL提琴,它表明上面的工作方式与预期的一样

注意:为了避免任何误解,我不认为联合解决了所述问题

它仅用于处理初始化字符串和问题 在结尾加一个逗号

正如米凯尔在下面写道的

试试这个:

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

试试这个,希望对你的朋友有用

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

我的和奎师那一样

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

很抱歉我的错。。我使用sql Server我比我的影子更快我不认为否决票是因为代码。代码是有效的。然而,关于它如何工作的描述是错误的。合并与连接字符串无关。串接字符串是用
+
完成的,这段代码使用了一个未记录的(据我所知)特性,即select语句中的每一行都会更新变量
coalesce
仅用于处理初始化字符串和在末尾附加逗号的问题@谢谢你的评论,因为我被否决票弄糊涂了。选民应该留下评论,以便更好地回答我的问题或删除它。然而,我并没有说联合解决了这个问题。再次感谢!