Mysql
 sql >> Base de données >  >> RDS >> Mysql

Tirez les X premiers mots (pas seulement les caractères) de mySQL

Vous voulez absolument utiliser SUBSTRING_INDEX qui renverra un certain nombre de caractères jusqu'à ce qu'un nombre spécifié soit atteint en fonction de l'occurrence d'un délimiteur. Dans votre cas, l'appel ressemblerait à ceci :

 SELECT SUBSTRING_INDEX(text_field, ' ', 6) FROM ...

En particulier, cela renverra jusqu'à six mots où nous définissons un mot comme un ensemble de caractères qui ne sont pas des espaces délimités par des espaces.

Remarque :cela renverra la ponctuation attachée au dernier mot, qui peut être souhaitée ou non. Il serait assez simple de remplacer tous les caractères de ponctuation à la fin de la chaîne en PHP, mais si vous voulez rester complètement dans SQL, je pense que vous pouvez utiliser TRIM . La syntaxe pour cela serait quelque chose comme :

SELECT TRIM(TRAILING ',' FROM SUBSTRING_INDEX(text_field, ' ', 6)) FROM ...

Il peut y avoir une meilleure option pour supprimer la ponctuation de fin - mais c'est peut-être une autre question (je cherche toujours une meilleure solution que TRIM).