Twee opties:
-
Gebruik de
LIKE
zoekwoord, samen met procenttekens in de tekenreeksselect * from table where field like '%a%' or field like '%b%'.
(opmerking:als uw zoekreeks procenttekens bevat, moet u deze laten ontsnappen)
-
Als u op zoek bent naar een meer complexe combinatie van tekenreeksen dan u in uw voorbeeld hebt opgegeven, kunt u reguliere expressies (regex):
Zie de MySQL-handleiding voor meer informatie over het gebruik ervan:http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html
Hiervan, met behulp van LIKE
is de meest gebruikelijke oplossing -- het is standaard SQL en wordt algemeen gebruikt. Regex wordt minder vaak gebruikt, maar is veel krachtiger.
Merk op dat welke optie u ook kiest, u zich bewust moet zijn van mogelijke implicaties voor de prestaties. Als u op deze manier naar substrings zoekt, betekent dit dat de query de hele tabel moet scannen. Als je een grote tabel hebt, kan dit een erg langzame zoekopdracht opleveren en zal geen enkele hoeveelheid indexering helpen.
Als dit een probleem voor u is, en u steeds opnieuw naar dezelfde dingen moet zoeken, kunt u er de voorkeur aan geven iets te doen zoals het toevoegen van een vlagveld aan de tabel waarin wordt aangegeven dat het tekenreeksveld de relevante sub- snaren. Als u dit vlagveld up-to-date houdt wanneer u een record invoegt of bijwerkt, kunt u eenvoudig de vlag opvragen wanneer u wilt zoeken. Dit kan worden geïndexeerd en zou uw zoekopdracht veel sneller maken. Of het de moeite waard is om dat te doen, is aan jou, het hangt af van hoe slecht de prestatie is met LIKE
.