Hola, buenos dias.
Lastimosamente no tengo un delimitador para poder decir, aqui es el corte y seguir con las demas, al ser poemas, puedo tener muchas comas en un solo verso, ej:
Cita: dame tu voz, para ahogar el silencio, alma mía.
A la vez tengo la complejidad de no cortar las palabras, he estado buscando una funcion para contar palabras, pero MySQL nativamente no tiene nada, les comparto una funcion que encontre que permite hacer esto:
Código:
DELIMITER $$
CREATE FUNCTION wordcount(str TEXT)
RETURNS INT
DETERMINISTIC
SQL SECURITY INVOKER
NO SQL
BEGIN
DECLARE wordCnt, idx, maxIdx INT DEFAULT 0;
DECLARE currChar, prevChar BOOL DEFAULT 0;
SET maxIdx=char_length(str);
WHILE idx < maxIdx DO
SET currChar=SUBSTRING(str, idx, 1) RLIKE '[[:alnum:]]';
IF NOT prevChar AND currChar THEN
SET wordCnt=wordCnt+1;
END IF;
SET prevChar=currChar;
SET idx=idx+1;
END WHILE;
RETURN wordCnt;
END
$$
Lo que estoy intentando hacer es un Store Procedure, que me permita hacer la busqueda, tengo algo pero no es mucho:
Código:
BEGIN
DROP TEMPORARY TABLE IF EXISTS tabla_tmp;
CREATE TEMPORARY TABLE tabla_tmp
SELECT CONCAT(texto,' ',numero) AS "Verse",
WORDCOUNT(ltrim(rtrim(concat(texto," ",numero)))) as "Words",
LENGTH(ltrim(rtrim(concat(texto," ",numero)))) as "Letters"
FROM Genesis;
SELECT * FROM tabla_tmp;
END
Me da como resultado:
Código:
----------------------------------------------------------------------------
|Verse |Words | Letters |
|-------------------------------------------------------|---------|---------- |
|dame tu voz, para ahogar el silencio, alma mía. |9 | 48 |
-----------------------------------------------------------------------------
Se me ocurre que teniendo la cantidad de letras, y palabras puedo hacer algo.
Alguna sugerencia.