sql >> Database >  >> RDS >> Mysql

Doorzoek een hele tabel in mySQL voor een string

Probeer zoiets als dit:

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

Misschien wilt u SQL-documenten bekijken voor aanvullende informatie over tekenreeksoperators en reguliere expressies.

Bewerken:er kunnen wat problemen zijn met NULL-velden, dus voor het geval u IFNULL(field_i, '') wilt gebruiken in plaats van alleen field_i

Hoofdlettergevoeligheid :U kunt hoofdletterongevoelige sortering of iets dergelijks gebruiken:

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

Zoek gewoon in alle velden :Ik geloof dat er geen manier is om een ​​SQL-query te maken die door alle velden zal zoeken zonder expliciet het veld om in te zoeken aan te geven. De reden is dat er een theorie is van relationele databases en strikte regels voor het manipuleren van relationele gegevens (zoiets als relationele algebra of codd algebra; dit is waar SQL vandaan komt), en de theorie staat dingen zoals "zoek gewoon alle velden" niet toe. Natuurlijk hangt het daadwerkelijke gedrag af van de concrete realisatie van de leverancier. Maar in het gewone geval is het niet mogelijk. Controleer voor de zekerheid SELECT operatorsyntaxis (WHERE sectie, om precies te zijn).



  1. draaitabel Oracle - hoe rij-items in kolommen te veranderen

  2. Installeer SQL Server 2019 op een Mac

  3. AWS Python Lambda met Oracle

  4. MySQL krijgt rijpositie in ORDER BY