tsql中断逗号分隔的字符串,然后循环

tsql中断逗号分隔的字符串,然后循环,tsql,sql-server-2008,Tsql,Sql Server 2008,我有逗号分隔的字符串 a=1,2,3,4 现在我想打断这个字符串,然后在SQLServer2008的tsql查询中使用1、2、3等循环遍历它 set @sql = @sql + ' and (ClassicStation.int_WheatherTypeId = a[i]) AND (ClassicStation.int_MeasurementId IN (1,2)) or' 也许fn_split是一个选项检查在您的示例中,我觉得您可以这样做: set @sql = @sql + 'and

我有逗号分隔的字符串

a=1,2,3,4
现在我想打断这个字符串,然后在SQLServer2008的tsql查询中使用1、2、3等循环遍历它

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

也许fn_split是一个选项检查

在您的示例中,我觉得您可以这样做:

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