webForumDet fria alternativet

Hämta ett värde i en array med sql?

Databaser & SQLur Databashanterare & SQL

9 svar · 516 visningar · startad av inspiro

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

Om jag har ett fält i min db som innehåller en array (exempelvis 10,20,30,40). Hur gör jag för att hämta exempelvis värdet "30" direkt i min sql-sats (sql-server)?

@nderss avatar@ndersMedlem sedan juni 200032 969 inlägg
#2

Menar du att du lagrar en kommaseparerad lista med värden i ett fält?
Vad är det du lagrar? Och varför?

inspiroMedlem sedan sep. 2005673 inlägg
#3

Jupps. Jag kan inte ändra på produkten och jag har ingen möjlighet att köra kod heller så sql är enda sättet! Har labbat lite med substring och charindex men det fungerar dåligt, speciellt som längden på varje värde i arrayen varierar.

K@llenMedlem sedan mars 20032 667 inlägg
#4

inspiro skrev:

Om jag har ett fält i min db som innehåller en array (exempelvis 10,20,30,40).

Låter som typiskt problematiskt, om fältet nu inte är ENUM (heter det så även i SQL-server?) eller liknande.

inspiroMedlem sedan sep. 2005673 inlägg
#5

Näe det är ett vanligt nvar-fält med en kommaseparerad sträng i.

@nderss avatar@ndersMedlem sedan juni 200032 969 inlägg
#6

Om du nu måste ha det lagrat på det sättet, så kan du ju se till att du har ett kommatecken sist och först i fältet.

SELECT * FROM tbl_foo WHERE fld LIKE '%,30,%'
inspiroMedlem sedan sep. 2005673 inlägg
#7

Jo, fast jag vet inte vad värdet är... alltså behöver en viss position.

@nderss avatar@ndersMedlem sedan juni 200032 969 inlägg
#8

Okej, lycka till.

Mvh

inspiroMedlem sedan sep. 2005673 inlägg
#9

Anar jag en viss sarkasm här... :p

DinoMedlem sedan sep. 20011 914 inlägg
130 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)