相关文章推荐
傻傻的佛珠  ·  Mybatis union ...·  5 月前    · 
激动的抽屉  ·  TypeError: linear(): ...·  11 月前    · 
痴情的葫芦  ·  sum sql query-掘金·  1 年前    · 

tsql打破一个逗号分隔的字符串,然后循环使用

0 人关注

我有逗号分隔的字符串

a=1,2,3,4

现在我想打破这个字符串,然后在sql server 2008的tsql查询中使用1,2,3等进行循环。

set @sql = @sql + ' and  (ClassicStation.int_WheatherTypeId = a[i]) AND (ClassicStation.int_MeasurementId IN (1,2)) or'
tsql
sql-server-2008
maztt
maztt
发布于 2011-07-30
2 个回答
t-clausen.dk
t-clausen.dk
发布于 2012-11-14
0 人赞同

在你的例子中,在我看来,你可以直接这样做。

set @sql = @sql + 'and  (ClassicStation.int_WheatherTypeId in ('+@a+')) 
AND (ClassicStation.int_MeasurementId IN (1,2))'

否则你可以用到处都有的split函数来分割字符串,或者

declare @a varchar(max)
set @a ='1,2,3,4' + ','
;with csv (col, pos) as
select left(@a, charindex(',', @a) -1),charindex(',', @a)
union all
select substring(@a, pos +1, charindex(',', @a, pos +1) - pos-1), 
charindex(',',@a, pos+1) from csv
where pos < len(@a)