sql >> Database >  >> RDS >> Mysql

MySQL retourneert exacte woordovereenkomst uit tekstinhoud

Het juiste antwoord is waarschijnlijk zoeken in volledige tekst.

Er zijn echter twee kanttekeningen. Als je korte reeksen hebt, zoals productbeschrijvingen of gebruikersopmerkingen, en je wilt like . gebruiken , kunt u zoiets als dit doen:

where concat(' ', txt, ' ') like concat('% ', $word, ' %')

Dit veronderstelt echter dat de scheidingstekens spaties zijn. Dus hij zou "Hallo" niet vinden. U kunt dit oplossen door het volgende te doen:

where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')

Maar je zult snel merken dat dit vervelend is. Vandaar:zoeken in volledige tekst.

Ten tweede, als u echt zoekwoorden opslaat in de kolom, dan is de oplossing eenvoudiger. Doe dat niet. Maak een verbindingstabel met één rij per oorspronkelijke tabelrij en één per trefwoord. Het opslaan van lijsten in strings is een slecht idee in SQL.




  1. Gegevens opslaan in Clob met Hibernate in Oracle 10g

  2. SQL-overeenkomst op letter- en cijferrangschikking

  3. Oracle Connection String voor RAC-omgeving?

  4. 4 manieren om een ​​lijst met schema's te krijgen in SQL Server Agent (T-SQL)