Od komentarzu km na powyższym ...
wiem, że nie stwierdził, że jest przecinek rozdzielone, ale jeśli to było CSV lub nawet jeśli to przestrzeń oddzielona można wykonać następujące czynności.
DECLARE @SomeTest varchar(100) --used to hold your values
SET @SomeTest = (SELECT '68,72,103') --just some test data
SELECT
LoginID --change to your column names
FROM
Login --change to your source table name
INNER JOIN
( SELECT
*
FROM fn_IntegerInList(@SomeTest)
) n
ON
n.InListID = Login.LoginID
ORDER BY
n.SortOrder
a następnie utworzyć fn_IntegerInList()
:
CREATE FUNCTION [dbo].[fn_IntegerInList] (@InListString ntext)
RETURNS @tblINList TABLE (InListID int, SortOrder int)
AS
BEGIN
declare @length int
declare @startpos int
declare @ctr int
declare @val nvarchar(50)
declare @subs nvarchar(50)
declare @sort int
set @sort=1
set @startpos = 1
set @ctr = 1
select @length = datalength(@InListString)
while (@ctr <= @length)
begin
select @val = substring(@InListString,@ctr,1)
if @val = N','
begin
select @subs = substring(@InListString,@startpos,@[email protected])
insert into @tblINList values (@subs, @sort)
set @startpos = @ctr+1
end
if @ctr = @length
begin
select @subs = substring(@InListString,@startpos,@[email protected])
insert into @tblINList values (@subs, @sort)
end
set @ctr = @ctr +1
set @sort = @sort + 1
end
RETURN
END
ten sposób Państwa funkcja tworzy tabelę, która trzyma porządek mianowicie SortOrder
i identyfikator lub numer są przechodzącą w Można oczywiście zmodyfikować to. tak, że szukasz wartości spacji
zamiast wartości ,
. W przeciwnym razie Martin ma odpowiedni pomysł w swojej odpowiedzi. Proszę zauważyć w moim przykładzie używam jednego z moich tabel, więc będziesz musiał zmienić nazwę Login
na wszystko, z czym masz do czynienia.
+1 lub jeśli przez CSV, podziel się na zmienną @table z kolumną tożsamości, do której można dołączyć, a następnie zamówić przez –
@KM, więc OP musi napisać procedurę sklepu dla prostego wyboru –
@LuisSiquot - They używają już procedury składowanej. Ale powinny używać sparametryzowanych zapytań, nawet jeśli nie były. Istnieje wiele funkcji opartych na tabelach rozdzielonych, które działają zgodnie z sugestią KM, że OP mógłby się przyłączyć, ale jeśli kompatybilność z 2005 r. Nie będzie potrzebna, TVP będą lepsze. –