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

Come scrivere una query MySQL dove A contiene ( aob )

Due opzioni:

  1. Usa il LIKE parola chiave, insieme ai segni di percentuale nella stringa

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

    (nota:se la stringa di ricerca contiene segni di percentuale, dovrai eseguire l'escape)

  2. Se stai cercando una combinazione di stringhe più complessa di quella che hai specificato nel tuo esempio, puoi usare espressioni regolari (regex):

    Consulta il manuale MySQL per ulteriori informazioni su come utilizzarli:http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html

Di questi, usando LIKE è la soluzione più comune:è SQL standard e di uso comune. Regex è usato meno comunemente ma molto più potente.

Nota che qualunque opzione tu scelga, devi essere consapevole delle possibili implicazioni sulle prestazioni. La ricerca di sottostringhe come questa significherà che la query dovrà eseguire la scansione dell'intera tabella. Se hai una tabella di grandi dimensioni, ciò potrebbe comportare una query molto lenta e nessuna quantità di indicizzazione sarà di aiuto.

Se questo è un problema per te e avrai bisogno di cercare le stesse cose più e più volte, potresti preferire fare qualcosa come aggiungere un campo flag alla tabella che specifica che il campo stringa contiene il relativo sub- stringhe. Se mantieni aggiornato questo campo flag quando inserisci o aggiorna un record, puoi semplicemente interrogare il flag quando vuoi cercare. Questo può essere indicizzato e renderebbe la tua query molto più veloce. Se vale la pena farlo dipende da te, dipenderà da quanto pessime saranno le prestazioni usando LIKE .