webForumDet fria alternativet

Hur skickar jag in en array? (sqlserver)

9 svar · 568 visningar · startad av inspiro

inspiroMedlem sedan sep. 2005673 inlägg
#1

Hej! Har en sql-fråga som ser ut ungefär så här:

SELECT     *
FROM         tabell
WHERE     (id IN (10,20,25))

Nu vill jag skicka in värdet "10,20,25" dynamiskt. Alltså nåt i den här stilen: WHERE (id IN (@variabel))

Hur gör man det?

inspiroMedlem sedan sep. 2005673 inlägg
#2

Det var ju visst bara att skicka in en int, trodde inte det gick eftersom det var decimaler i den tänkte jag... :)

inspiroMedlem sedan sep. 2005673 inlägg
#3

Hm, var för snabb där... får det inte att funka ändå.

Alltså problemet är hur jag ska få in värdet i databasen! För om jag kör frågan i sql-server så funkar det om jag har en @var int och skickar in värdet "10,20,25" men om jag från koden skickar in samma värde så får jag fel. Har provat att skicka in en sträng, en int, arrayer men fård et inte att fungera ändå. Hur gör jag för att få in värdet i min sql-sats?

inspiroMedlem sedan sep. 2005673 inlägg
#4

Så här har jag gjkort nu, skriver jag med fasta värden så funkar det:

SELECT     *
FROM         tabell
WHERE     (CAST(id AS NVARCHAR(10)) IN (135,136))

Men skriver jag så här får jag inte ut nåt:

@ObjectsID nvarchar(200)
 (CAST(id AS NVARCHAR(10)) IN ([b]@ObjectsID[/b]))

Vad är fel?

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#5

prova det här

EXEC('SELECT * FROM tabell WHERE ID IN (' + @objectsID + ')')
inspiroMedlem sedan sep. 2005673 inlägg
#6

Det fungerade, kanon! :) Du har inte lust att förklara varför?

@ndersMedlem sedan juni 200032 969 inlägg
#7

Det är vanlig stränkonkatenering, så det är som att du skapar SQL-frågan av olika delsträngar i vilket språk som helst.

mvh

inspiroMedlem sedan sep. 2005673 inlägg
#8

Hm, får det ändå inte att fungera. När jag kör frågan i sql-server fungerar det bra men exekverar jag från koden så får jag följande meddelande:

Line 3: Incorrect syntax near ')'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Line 3: Incorrect syntax near ')'.

Jesper TMedlem sedan nov. 20017 144 inlägg
#9

Det fungerade, kanon! Du har inte lust att förklara varför?

Det är en dynamisk sql-sats, vilket även betyder att den aldrig kommer att kompileras = exekveras långsamare.

inspiroMedlem sedan sep. 2005673 inlägg
#10

Finns det någon bättre lösning då? Jag har alltså ett antal id i en kommaseparerad sträng och jag vill få ut alla poster i en tabell som motsvarar dessa id:n.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)