webForumDet fria alternativet

Hur skickar jag in en array? (sqlserver)

Databaser & SQL

9 svar · 568 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#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?

Medlem 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... :)

Medlem 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?

Medlem 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?

Medlem sedan jan. 20011 140 inlägg
#5

prova det här

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

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

Medlem sedan juni 200032 967 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

Medlem 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 ')'.

Medlem 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.

Medlem 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.

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)