Tsql разрыв строки через запятую и затем цикл - PullRequest
0 голосов
/ 30 июля 2011

у меня есть строка, разделенная запятыми

a=1,2,3,4

Теперь я хочу разбить эту строку, а затем перебрать ее, используя 1,2,3 и т. Д. В запросе в tsql в sql server 2008

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

Ответы [ 2 ]

0 голосов
/ 30 июля 2011

В вашем примере мне кажется, что вы можете просто сделать это:

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

В противном случае вы можете разделить строку с помощью функции разделения, которая расположена везде или как это

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
0 голосов
/ 30 июля 2011

возможно, fn_split - опция проверки http://odetocode.com/code/365.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...