webForumDet fria alternativet

case i en selectsats?

Databaser & SQLur Databashanterare & SQL

6 svar · 433 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Jag hämtar lite data med en vanlig select men vad gäller en av kolumnerna så skulle jag vilja ha ett villkor. Om en inparameter är samma som ett id som hämtas från tabellen så vill jag sätta ett eget värde. Kan man göra nåt sånt här:

SELECT A CASE WHEN (@ID = A) THEN 0 ELSE A, ... FROM Tabell
Medlem sedan juni 20003 076 inlägg
#2

Detta borde väl gå: :)

SELECT CASE A WHEN @ID THEN 0 ELSE A END FROM Tabell
Medlem sedan sep. 2005673 inlägg
#3

Får tyvärr felmeddelandet "felaktig parameter". Använder sql server express kanske ska tilläggas!

Medlem sedan juni 20003 076 inlägg
#4

Är @ID och kolumnen A av samma datatyp?

Medlem sedan maj 200010 687 inlägg
#5

SQL-server?
Så här kan man skriva.

SELECT (CASE WHEN @ID = A THEN 0 ELSE A END) AS A FROM Tabell
Medlem sedan dec. 200012 464 inlägg
#6

Posta hela koden och hela felmeddelandet.

Medlem sedan sep. 2005673 inlägg
#7

Japp, samma datatyp (int). Får bara det felmeddelandet jag skrev när jag körde frågan i sql-server, "felaktig parameter" (samma fel på din sql, Erik). Frågan är den jag skrev typ bara att den hämtar data från några fler kolumner. En vanlig select-sats alltså, förutom det här case-grejjen.

Nu har jag iofs löst det kod-vägen istället, men om man kan göra såna här saker direkt i sql-satsen, visst är det bättre rent prestandamässigt (inte för att just det här exemplet kanske är någon prestandaslukare men jag menar generellt)?

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