我用逗号分隔字符串
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'
答案 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