2010-07-20 16 views
7

C'è un modo per contare le parole in una stringa di testo?Query per contare le parole SQLite 3

Sto usando SQLite 3 e sto cercando di scrivere una query che richiede un sacco di lunghe stringhe di testo e conta il numero di parole in ciascuna di esse.

Voglio anche di ignorare i tag HTML (o nulla tra segni di omissione) come tag di paragrafo, rompere i tag, ecc

Così, quando ho eseguito un testo di query di selezione dalla colonna appropriata, ottengo un testo di grandi dimensioni prolisso uscita con alcuni tag html e voglio solo contare le parole.

Come posso scrivere una query per farlo?

risposta

15

Per quanto ne so non c'è modo di contare direttamente il numero di parole in una stringa in SQL Lite 3. (io sono più familiarità con MySQL e MS SQL)

È possibile utilizzare Lunghezza e sostituisci come work around

SELECT length(@String) - length(replace(@String, ' ', '')) + 1 
0

La risposta precedente non è corretta per le colonne vuote. Avrete bisogno di aggiungere un caso/se/allora dichiarazione per la vostra selezione:

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; 

Modificato: Se la colonna ha 0 spazi, ma ha avuto una parola in esso, sarebbe segnalare in modo non corretto 0. Si modifica la condizione per consentire per questo.

Fonte: An Excel Trick I used to do the same thing

0

La risposta da @Ziferius ha un piccolo errore di sintassi, il seguente uno è uno funzionante, testato da 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; 
Problemi correlati