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

Søg i en hel tabel i mySQL efter en streng

Prøv noget som dette:

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

Du ønsker måske at se SQL-dokumenter for yderligere oplysninger om strengoperatorer og regulære udtryk.

Rediger:Der kan være nogle problemer med NULL-felter, så bare hvis du måske vil bruge IFNULL(field_i, '') i stedet for blot field_i

Stor og store bogstaver :Du kan bruge store og små bogstaver i sortering eller sådan noget:

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

Søg bare i alle felter :Jeg mener, at der ikke er nogen måde at lave en SQL-forespørgsel, der vil søge gennem alle felter uden eksplicit at erklære felt at søge i. Årsagen er, at der er en teori om relationelle databaser og strenge regler for at manipulere relationelle data (noget som relationel algebra eller codd algebra; det er hvad SQL er fra), og teorien tillader ikke ting som "bare søg i alle felter". Den faktiske adfærd afhænger naturligvis af leverandørens konkrete erkendelse. Men i almindelige tilfælde er det ikke muligt. For at være sikker, tjek SELECT operatorsyntaks (WHERE afsnit, for at være præcis).



  1. Hvordan bruger man en pakkekonstant i SQL SELECT-sætning?

  2. Sammenligning af fuldtekstsøgemaskine - Lucene, Sphinx, Postgresql, MySQL?

  3. PHP med MySQL 8.0+ fejl:Serveren anmodede om godkendelsesmetode ukendt for klienten

  4. Tager rekorden med max dato