[ Foro de SQL (y MySQL) ]

Contar palabras y cortar en MySQL

24-Dec-2017 16:28
Carlos Dahbura
1 Respuestas

Buenas tardes.

El objetivo de este hilo es pedir de su acostumbrada ayuda, con una consulta MySql que estoy realizando, permitanme y les explico.

Actualmente tengo una tabla "poemas", dicha tambien tabla tiene "n" cantidad de registros, y el objetivo es que con ayuda de un Store Procedure, pueda contar las palabras para cortarlas, veamos un ejemplo:

Situacion Actual (Este es un solo registro en MySQL):

La gloria de quien mueve todo el mundo el universo llena, y resplandece en unas partes m?s y en otras menos.

Situacion Buscada (Pueden ser 2 o mas registros en MySQL):

La gloria de quien mueve todo el mundo el universo llena, (1/2)
y resplandece en unas partes m?s y en otras menos. (2/2)

Lo que deseo es saber el largo, y con esto cortar para crear otra registro, y tambien agregar el (1/2) segun sea necesario, puede ser incluso (1/3), (1/4) o mas.

Una vez realizado el split del registro original, deseo guardalo en una tabla.

Esto es para un cliente que desea postear poemas en Twitter, pero obviamente solo tengo 140 caracteres en dicha red, y necesito dejar cortados los textos, y listos para ser posteados ya sea en un solo tweet o varios.

Igualmente no puedo usar un "length" por que sino voy a tener palabras cortadas.

Espero me puedan ayudar, ya que ni idea.


26-Dec-2017 10:52
Nacho Cabanes (+36)

No es trivial, porque hasta donde yo sé, MySQL no tiene una función "split", sino que deberías buscar la posición de la coma, coger el substring anterior y luego el posterior. Sería más razonable hacerlo desde el lenguaje con el que accedes a la base de datos (¿PHP?). Pero incluso eso tiene problemas porque puede existir alguna coma en medio de una línea que no debieras partir, por lo que deberías añadir validaciones adicionales de si esa coma está entre la posición X y la Y.

La solución más razonable es que en la base de datos la información ya esté directamente en forma utilizable: número de poema, número de línea, texto de la línea. Así sólo es necesario llevar cuenta del poema en el que estás y la última línea mostrada.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)