sql >> Database teknologi >  >> RDS >> Mysql

Sådan skriver du MySQL-forespørgsel, hvor A indeholder (a eller b)

To muligheder:

  1. Brug LIKE søgeord sammen med procenttegn i strengen

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

    (bemærk:Hvis din søgestreng indeholder procenttegn, skal du undslippe dem)

  2. Hvis du leder efter mere en kompleks kombination af strenge, end du har angivet i dit eksempel, kan du regulære udtryk (regex):

    Se MySQL-manualen for mere om, hvordan du bruger dem:http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html

Af disse ved hjælp af LIKE er den mest sædvanlige løsning -- det er standard SQL, og i almindelig brug. Regex er mindre almindeligt brugt, men meget mere kraftfuldt.

Bemærk, at uanset hvilken mulighed du vælger, skal du være opmærksom på mulige præstationsimplikationer. Søgning efter understrenge som denne vil betyde, at forespørgslen skal scanne hele tabellen. Hvis du har en stor tabel, kan dette give en meget langsom forespørgsel, og ingen mængde indeksering vil hjælpe.

Hvis dette er et problem for dig, og du bliver nødt til at søge efter de samme ting igen og igen, foretrækker du måske at gøre noget som at tilføje et flagfelt til tabellen, som angiver, at strengfeltet indeholder den relevante under- strenge. Hvis du holder dette flagfelt opdateret, når du indsætter eller opdaterer en post, kan du blot forespørge flaget, når du vil søge. Dette kan indekseres og vil gøre din forespørgsel meget hurtigere. Om det er besværet værd at gøre det er op til dig, det afhænger af hvor dårlig ydeevnen er ved at bruge LIKE .



  1. Hvordan kan jeg gentage et MySQL-resultatsæt?

  2. får syntaksfejl ved oprettelse af funktion

  3. Er MySQL mere modstandsdygtig overfor SQL-injektionsangreb end PostgreSQL (under Perl/DBI)?

  4. Sletningsrækkefølge med fremmednøglebegrænsninger,