25. april 2010 - 14:40
Der er
10 kommentarer og 1 løsning
Lav udtræk hvor streng indeholder tal
Hej Eksperter, Jeg vil gerne have returneret en række hvor feltet "kategori" indeholder et bestemt tal. Feltet kategori kan indeholde flere tal, dog altid adskilt med komma. Udtrækker skal matche mit bestemte tal i kolonnen. Eksempel: Find tal = 2; Kolonnen = 1,4,5 Her skal den altså ikke returnere noget, eftersom 2 ikke findes i kolonnen. Jeg håber jeg har forklaret mig forståeligt. Findes der en funktion til dette? På forhånd tak
Annonceindlæg fra Infor
25. april 2010 - 15:06
#1
SELECT * FROM tabel WHERE kolonnen = 2
25. april 2010 - 15:07
#2
Jeg ved ikke om det kan lade sig gøre sådan her: $nummer = 2 mysql_query("SELECT * FROM tabel WHERE kategori='$nummer%s'");
25. april 2010 - 15:10
#3
... WHERE LOCATE(',2,', CONCAT(',',felt,','))
25. april 2010 - 15:11
#4
Men langt bedre: vaelg en anden database struktur ! Felter med vaerdier adskilt af komma er FY FY i databaser.
25. april 2010 - 15:35
#5
@arne_v Skal der være , på begge sider af 2 - hvis nu 2 skulle ligge som den første? Eks. 2,3,4 WHERE LOCATE(',2,', CONCAT(',',felt,','))
25. april 2010 - 15:45
#6
Umiddelbart får jeg intet returneret ved: WHERE b_categories = LOCATE(',".$blog_category.",', CONCAT(',',b_categories,',')) ORDER BY $blog_category indeholder 2 og b_categories i min række indeholder 2,3,4
25. april 2010 - 15:47
#7
Det er derfor jeg konkatanerer komma foer og efter feltet.
25. april 2010 - 15:49
#8
Det skal selvfølgelig ikke være b_categories = men derimod men locate. Tak for hjælpen - smider du et svar? :)
25. april 2010 - 15:49
#9
Udskriv din SQL og se om den indeholder det du tror. ,2, er en substring af ,2,3,4,
25. april 2010 - 15:50
#10
Ja selvfoelgelig. Maaske var det paenere med LOCATE(...) > 0. Og svar.
25. april 2010 - 15:51
#11
Oh jeg menr stadigt at du boer aendre strukturen. Det her komma separerede felt vil blive pinefuldt aar efter aar.
Computerworld tilbyder specialiserede kurser i database-management