Y a-t-il un moyen de compter les mots dans une chaîne de texte? p>
J'utilise SQLite 3 et j'essaie d'écrire une requête qui prend un tas de longs chaînes de texte et compte le nombre de mots dans chacun. P>
Je veux aussi ignorer les balises HTML (ou quoi que ce soit entre Createts) tels que des balises de paragraphe, des balises de rupture, etc. p>
Alors, lorsque j'exécute une requête en sélection de texte dans la colonne appropriée, je reçois une grande sortie de texte verbal avec quelques balises HTML, et je veux juste compter les mots. P>
Comment puis-je écrire une requête pour faire cela? P>
3 Réponses :
Autant que je sache, il n'y a aucun moyen de compter directement le nombre de mots dans une chaîne de SQL Lite 3. (Je connais plus avec MySQL et MS SQL)
Vous pouvez utiliser la longueur et remplacer en tant que Travailler autour P>
SELECT length(@String) - length(replace(@String, ' ', '')) + 1
La réponse précédente est incorrecte pour les colonnes blanches. Vous devrez ajouter une affaire / une fois / puis sur votre instruction sur votre sélection: édité: Si la colonne a 0 espaces, mais il y avait un mot, il signalerait de manière incorrecte 0. changé. la condition de le permettre. p> Source: Excel Trick, je faisais la même chose p> p>
La réponse de @ziferius a une petite erreur de syntaxe, l'une suivante est une solution qui fonctionne, testée par moi-même.
SELECT someStr, CASE WHEN length(someStr) >= 1
THEN
(length(someStr) - length(replace(someStr, ' ', ''))) + 1
ELSE
(length(someStr) - length(replace(someStr, ' ', '')))
END as NumOfWords FROM someTable;
Très connexe: String - Comment compter les instances de caractère dans la colonne SQL - Overflow de pile - (comptez simplement le nombre d'espaces et ajouter un, tant qu'il n'y a pas de double espace / espace au début ou à la fin de la chaîne)