2010-07-20 94 views
7

¿Hay alguna forma de contar palabras en una cadena de texto?Consulta para contar palabras SQLite 3

Estoy usando SQLite 3 y estoy tratando de escribir una consulta que requiere un montón de largas cadenas de texto, y cuenta el número de palabras en cada una.

que también quieren hacer caso omiso de las etiquetas HTML (o cualquier cosa entre signos de intercalación), tales como etiquetas de párrafo, romper etiquetas, etc.

Así que cuando corro un texto seleccionando consulta de la columna correspondiente, aparece un texto de gran tamaño prolijo salida con algunas etiquetas html, y solo quiero contar las palabras.

¿Cómo puedo escribir una consulta para hacer esto?

Respuesta

15

Por lo que yo sé que no hay manera de contar directamente el número de palabras en una cadena en SQL Lite 3. (estoy más familiarizado con MySQL y MS SQL)

Puede utilizar Longitud y reemplazar como un trabajo alrededor de

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

La respuesta anterior es incorrecta para las columnas que están en blanco. Usted tendrá que añadir un caso/cuándo/then a su selecto:

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; 

Editado: Si la columna tiene 0 espacios, pero tenía una palabra en ella, sería informar incorrectamente 0. Se ha cambiado la condición para permitir para ello.

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

0

La respuesta de @Ziferius tiene un error de sintaxis pequeña, la siguiente es uno que funciona, probado por mí mismo.

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; 
Cuestiones relacionadas