tsql打破逗号分隔的字符串然后循环

时间:2011-07-30 12:21:40

标签: tsql sql-server-2008

我用逗号分隔字符串

a=1,2,3,4

现在我想打破这个字符串,然后在sql server 2008的sql中使用1,2,3等循环遍历它

set @sql = @sql + ' and  (ClassicStation.int_WheatherTypeId = a[i]) AND (ClassicStation.int_MeasurementId IN (1,2)) or'

2 个答案:

答案 0 :(得分:0)

也许fn_split是一个选项检查http://odetocode.com/code/365.aspx

答案 1 :(得分: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)
)
select * from csv