sql >> Database >  >> RDS >> Mysql

Hoe een MySQL-query te schrijven waarbij A (a of b) bevat

Twee opties:

  1. Gebruik de LIKE zoekwoord, samen met procenttekens in de tekenreeks

    select * from table where field like '%a%' or field like '%b%'.
    

    (opmerking:als uw zoekreeks procenttekens bevat, moet u deze laten ontsnappen)

  2. 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 .



  1. Rails bij het installeren van mysql - Fout bij het installeren van mysql2:FOUT:kan de native extensie van de gem niet bouwen

  2. Gettext of databasevertaling

  3. Hoe de mediaan te berekenen in PostgreSQL

  4. Syntaxisfout met IF EXISTS UPDATE ELSE INSERT