我有逗号分隔的字符串
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'
现在我想打破这个字符串,然后在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 发布于 2011-07-30
2 个回答
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)
在你的例子中,在我看来,你可以直接这样做。
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)
否则你可以用到处都有的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)
在你的例子中,在我看来,你可以直接这样做。
set @sql = @sql + 'and (ClassicStation.int_WheatherTypeId in ('+@a+')) AND (ClassicStation.int_MeasurementId IN (1,2))'否则你可以用到处都有的split函数来分割字符串,或者