Nå, du kan altid prøve WHERE textcolumn LIKE "%SUBSTRING%"
- men dette er garanteret ret langsomt, da din forespørgsel ikke kan lave et indeksmatch, fordi du leder efter tegn i venstre side.
Det afhænger af felttypen - et tekstområde vil normalt ikke blive gemt som VARCHAR, men snarere som (en slags) TEKST-felt, så du kan bruge KAMP MOD operatør.
For at få de kolonner, der ikke matcher, skal du blot sætte en NOT foran lignende:WHERE textcolumn NOT LIKE "%SUBSTRING%"
.
Hvorvidt søgningen skelner mellem store og små bogstaver eller ej, afhænger af, hvordan du lagerfører dataene, især hvilken SAMLING du bruger. Som standard vil søgningen ikke skelne mellem store og små bogstaver.
Opdateret svar for at afspejle spørgsmålsopdatering:
Jeg siger det ved at lave et WHERE field LIKE "%value%"
er langsommere end WHERE field LIKE "value%"
hvis kolonnefeltet har et indeks, men det er stadig betydeligt hurtigere end at få alle værdier og have dit applikationsfilter. Begge scenarier:
1/ Hvis du gør SELECT field FROM table WHERE field LIKE "%value%"
, vil MySQL scanne hele tabellen og kun sende de felter, der indeholder "værdi".
2/ Hvis du gør SELECT field FROM table
og så lad din applikation (i dit tilfælde PHP) kun filtrere rækkerne med "værdi" i, MySQL scanner også hele tabellen, men sender alle felterne til PHP, som så skal udføre yderligere arbejde. Dette er meget langsommere end tilfælde #1.
Løsning:Brug venligst WHERE
klausul, og brug EXPLAIN
for at se forestillingen.