返回逗号分隔的SQL值
我有一个字段名DAILYREPORT.WEATHERCONDITION,根据用户从可用的天气复选框列表中选择的内容,它可以保存值为“1,2,3”或“1”或“2,4”。天气表包含他选择的天气列表返回逗号分隔的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
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
仅用于处理初始化字符串和在末尾附加逗号的问题@谢谢你的评论,因为我被否决票弄糊涂了。选民应该留下评论,以便更好地回答我的问题或删除它。然而,我并没有说联合解决了这个问题。再次感谢!