Mam takie problem. Otóż posiadam procedurę i chiałbym do niej przekazać jako parametr listę identyfikatorów (chodzi o nr ID pewnych rekordów). Niestety jeśli przekaże je w parametrze np.
SELECT .. WHERE ... AND TrP_GIDNumer IN (@GID_Numery)
gdzie GID_Numery to wartość postaci np. 12356,125789,125478, no to niestety zapytanie nic mi nie zwraca. Jeśli wpisze te same wartości na sztwyno w zapytaniu czyli tak
SELECT .. WHERE ... AND TrP_GIDNumer IN (12356,125789,125478)
no to wtedy jest ok. Czy ma to związek z jakimś konwertowaniem wartości będących w parametrze ? Sytuacja taka ma miejsce zarówno jeśli przekażę parametry przez php jak i odpalę zapytanie MSSQL Serwer Managment. Dodam że kolumna TrP_GIDNumer jest typu INTEGER natomiast parametr @GID_Numery mam zadeklarowany jako varchar żeby móc przekazać cały ciąg razem z przecinkami.
Będę wdzięczny za pomoc
Pozdrawiam
Użyłem takiej funkcji split
CREATE FUNCTION SPLIT ( @s nvarchar(max), @trimPieces bit, @returnEmptyStrings bit ) returns @t TABLE (val nvarchar(max)) AS begin declare @i int, @j int SELECT @i = 0, @j = (len(@s) - len(REPLACE(@s,',',''))) ;with cte AS ( SELECT i = @i + 1, s = @s, n = substring(@s, 0, charindex(',', @s)), m = substring(@s, charindex(',', @s)+1, len(@s) - charindex(',', @s)) UNION ALL SELECT i = cte.i + 1, s = cte.m, n = substring(cte.m, 0, charindex(',', cte.m)), m = substring( cte.m, charindex(',', cte.m) + 1, len(cte.m)-charindex(',', cte.m) ) FROM cte WHERE i <= @j ) INSERT INTO @t (val) SELECT pieces FROM ( SELECT case when @trimPieces = 1 then ltrim(rtrim(case when i <= @j then n else m end)) else case when i <= @j then n else m end end AS pieces FROM cte ) t WHERE (@returnEmptyStrings = 0 AND len(pieces) > 0) OR (@returnEmptyStrings = 1) OPTION (maxrecursion 0) RETURN end GO
znalezionej na http://www.kodyaz.com/articles/sql-server-...t-function.aspx
w taki sposób i jakoś działa

... IN (SELECT * FROM SPLIT(@GID_Numery,1,0)) ...
choć jakby ktoś miał jakiś inny krótszy sposób to będę wdzięczny za info