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

Cerca una stringa in un'intera tabella in MySQL

Prova qualcosa del genere:

SELECT * FROM clients WHERE CONCAT(field1, '', field2, '', fieldn) LIKE "%Mary%"

Potresti voler vedere i documenti SQL per ulteriori informazioni sugli operatori di stringa e sulle espressioni regolari.

Modifica:potrebbero esserci dei problemi con i campi NULL, quindi nel caso tu voglia usare IFNULL(field_i, '') anziché solo field_i

Maiuscole/minuscole :puoi utilizzare regole di confronto senza distinzione tra maiuscole e minuscole o qualcosa del genere:

... WHERE LOWER(CONCAT(...)) LIKE LOWER("%Mary%")

Cerca in tutti i campi :Credo che non ci sia modo di creare una query SQL che cercherà in tutti i campi senza dichiarare esplicitamente il campo in cui cercare. Il motivo è che esiste una teoria dei database relazionali e regole rigide per manipolare i dati relazionali (qualcosa come l'algebra relazionale o codd algebra; ecco da cosa proviene SQL) e la teoria non consente cose come "cerca solo in tutti i campi". Naturalmente il comportamento effettivo dipende dalla realizzazione concreta del venditore. Ma nel caso comune non è possibile. Per essere sicuro, controlla SELECT sintassi dell'operatore (WHERE sezione, per la precisione).