Avatar billede webdb Nybegynder
14. marts 2006 - 15:58 Der er 8 kommentarer og
1 løsning

Select imod felt indeholdende tal i en ;-separeret liste

Hej,

Jeg har en tabel med en kolonne, A, der indeholder tal adskildt af et ;

Eksempel:
Kolonne A:
1;2;3;4;5;6;7
5;6;7;8;12;28
6;7;8;9;10;12;20
2;3;4;5;22;26
1;2;4;11;15

Hvordan skrives en sql select sætning der returnerer de rækker hvor eks. tallet 2 findes som del af den ;-separerede liste ?
I ovenstående eksempel skal resultatet blive række 1 og 4 og 5

Er det noget med en array af en slags ?
Avatar billede arne_v Ekspert
14. marts 2006 - 16:02 #1
WHERE CHARINDEX(';2;', ';' + felt_a + ';') > 0

maaske
Avatar billede arne_v Ekspert
14. marts 2006 - 16:03 #2
men maaske traenger den database til et redesign

den form for felt er jo en overtaedelse af alle regler for relationelle database
Avatar billede lorentsnv Nybegynder
14. marts 2006 - 16:04 #3
Jeg har ikke testet denne, men du burde kunne lave noget i retning af:

Select KolonneA
From Tabel
Where Left(KolonneA,2) = '2;' or Right(KolonneA,2) = ';2' or PATINDEX('%;2;%') > 0
Avatar billede lorentsnv Nybegynder
14. marts 2006 - 16:06 #4
Alternativt

Select KolonneA
From Tabel
Where Left(KolonneA,2) = '2;' or Right(KolonneA,2) = ';2' or CHARINDEX(';2;',KolonneA) > 0
Avatar billede lorentsnv Nybegynder
14. marts 2006 - 16:07 #5
Den første skulle være

Select KolonneA
From Tabel
Where Left(KolonneA,2) = '2;' or Right(KolonneA,2) = ';2' or PATINDEX('%;2;%', KolonneA) > 0
Avatar billede lorentsnv Nybegynder
14. marts 2006 - 16:09 #6
Arnes metode med at addere ; forran og efter KolonneA/felt_a er nok mere effektiv.
Avatar billede fennec Nybegynder
14. marts 2006 - 16:10 #7
Jeg vil være enig med arne_v her, og sige at databasen skal redesignes.

Du skal have oprette en ny tabel hvor du indsætter tallene i:
NyTabel (refID1, refID2)
1, 1
1, 2
1, 3
1, 4
1, 5
1, 6
1, 7
2, 5
2, 6
... osv ...
Avatar billede webdb Nybegynder
14. marts 2006 - 19:00 #8
Tak for input. Ja, databasen er et levn fra fortiden og trænger til redesign, ...
arne_v's svar virker perfekt, ... men jeg kan ikke lige se at jeg kan give point ? mangler denne mulighed på siden, og jeg er logget ind. mystisk !
Avatar billede arne_v Ekspert
14. marts 2006 - 19:10 #9
der skal ligges et svar foerst

hvilket jeg goer nu
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester