sql >> Databasteknik >  >> RDS >> Mysql

Sök i en hel tabell i mySQL efter en sträng

Prova något sånt här:

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

Du kanske vill se SQL-dokument för ytterligare information om strängoperatorer och reguljära uttryck.

Redigera:Det kan finnas vissa problem med NULL-fält, så ifall du kanske vill använda IFNULL(field_i, '') istället för bara field_i

Skiftlägeskänslighet :Du kan använda skiftlägesokänslig sortering eller något i stil med detta:

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

Sök bara i alla fält :Jag tror att det inte finns något sätt att göra en SQL-fråga som kommer att söka igenom alla fält utan att uttryckligen deklarera fält att söka i. Anledningen är att det finns en teori om relationsdatabaser och strikta regler för att manipulera relationsdata (något som relationell algebra eller codd algebra; det här är vad SQL kommer ifrån), och teorin tillåter inte saker som "sök bara i alla fält". Självklart beror det faktiska beteendet på säljarens konkreta insikt. Men i vanliga fall är det inte möjligt. För att vara säker, markera SELECT operatorsyntax (WHERE avsnitt, för att vara exakt).



  1. Begränsning av främmande nyckel kan orsaka cykler eller flera kaskadvägar?

  2. Hur hanterar jag att öppna/stänga Db-anslutning i en Go-app?

  3. Hur lagrar jag ett java.util.Date i ett MySQL-tidsstämpelfält i UTC/GMT-tidszonen?

  4. Android - uppdatera klientens SQLite-databas med GCM