sql >> Databasteknik >  >> RDS >> Mysql

Hur man skriver MySQL-fråga där A innehåller (a eller b)

Två alternativ:

  1. Använd LIKE sökord, tillsammans med procenttecken i strängen

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

    (obs! Om din söksträng innehåller procenttecken måste du undkomma dem)

  2. Om du letar efter en mer komplex kombination av strängar än du har angett i ditt exempel, kan du reguljära uttryck (regex):

    Se MySQL-manualen för mer om hur du använder dem:http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html

Av dessa använder du LIKE är den vanligaste lösningen -- det är standard SQL, och i vanligt bruk. Regex är mindre vanligt men mycket kraftfullare.

Observera att oavsett vilket alternativ du väljer måste du vara medveten om möjliga prestandaimplikationer. Att söka efter understrängar som denna kommer att innebära att frågan måste skanna hela tabellen. Om du har en stor tabell kan detta göra en mycket långsam fråga, och ingen mängd indexering kommer att hjälpa.

Om det här är ett problem för dig och du kommer att behöva söka efter samma saker om och om igen, kanske du föredrar att göra något som att lägga till ett flaggfält i tabellen som anger att strängfältet innehåller relevant under- strängar. Om du håller detta flaggfält uppdaterat när du infogar eller uppdaterar en post, kan du helt enkelt fråga flaggan när du vill söka. Detta kan indexeras och skulle göra din fråga mycket snabbare. Om det är värt ansträngningen att göra det är upp till dig, det beror på hur dålig prestandan är med LIKE .



  1. MySQL:@variabel vs variabel. Vad är skillnaden?

  2. Android-applikation för att skicka bild till MySQL

  3. FEL 1045 (28000):Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:NEJ)

  4. Logiska databassäkerhetskopieringar med MySQL-skal