09. oktober 2009 - 12:58Der er
8 kommentarer og 1 løsning
WHERE LIKE '%word%' skal være helt præcis?
Hej,
Jeg har et søgefelt hvor den driller lidt. I min tabel har jeg en række ved navn "sizes" som indeholder komma separeret information. F.eks. "Small,Medium,Large,X-Large" osv.
Jeg har følgende kald når man søger efter størrelse: WHERE sizes LIKE '%$size%'"
Problemet er bare at hvis jeg vælger "Large", så vælger den automatisk alt med "X-Large" også da ordet Large jo eksisterer i X-Large.
Hvordan kan man gøre det således at den kun vælger præcis det ord man søger efter i sit MySQL kald?
Ret indholdet i feltet fra Small,Medium,Large,X-Large til ,Small,Medium,Large,X-Large
Når så du søger, så søg efter WHERE sizes LIKE '%,$size%'"
Men ja, som andre har skrevet, så bør der normaliseres: Læg SIZE oplysningerne over i en anden tabel, og link til den (evt flere gange hvis der findes flere størrelser af en vare).
Plejer i normale omstændigheder også at bruge en mellemtabel til at lagre disse data. Dog er det allerede bygget på denne måde, og vil gerne lade det forblive sådan, da der er deadline på projektet, og gider ikke til at skulle lave det om til mellemtabeler og rette hele CMS.
Jeg legede også med dit hack-forslag, og fik det til at virke, men det andet ville dog være lidt bedre da det også bruges til keywords, farver osv.
Er der slet ikke nogen måde man kan komme igennem det på ved at have det stående komma separeret? Læste at REGEXP skulle kunne klare det, men synes bare ikke det virker
Jeg er ikke helt inde i det med RegEx, men har nu prøvet at søge efter en exact søgning, og kan bare ikke finde det. Hvis jeg adskiller med et andet tegn en "," måske "|" vil det måske være lettere? Er begyndt at overveje ovenstående hack. Hader at bruge for lang tid på én ting :)
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.