Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

iniciales en mysql con funciones

Estas en el tema de iniciales en mysql con funciones en el foro de Mysql en Foros del Web. hola a todos tengo un problemita con las funciones en mysql. como capturo las iniciales de una cadena de caracteres y si estan separadas por ...
  #1 (permalink)  
Antiguo 15/05/2011, 14:56
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Pregunta iniciales en mysql con funciones

hola a todos tengo un problemita con las funciones en mysql.
como capturo las iniciales de una cadena de caracteres y si estan separadas por espacios capturo los iniciales y los concadeno.
por ejemplo aca capturo la inicial de la palabra 'mysql'.

select substring('mysql',1,1); esto seria = m
otro seria asi select left('mysql',1).

pero si la cadena esta separada por espacios como ('mysql es mi favorito').
quisiera que me quede el resultado asi. (memf), solo las iniciales de cada palabra.

esto seria utilizando solo las funciones que estan mysql, como lo haria.

agradesco su ayuda.
  #2 (permalink)  
Antiguo 15/05/2011, 20:01
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 11 meses
Puntos: 6
Respuesta: iniciales en mysql con funciones

Yo creo que te seria mas sencillo hacer un select directamente del campo y luego con php tratarlo, cortar el string, hacer trim, no se.. creo que es mas sencillos, alguien me dijo una vez, contra mas sencillas las consultas a base de datos mejor.
  #3 (permalink)  
Antiguo 16/05/2011, 05:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: iniciales en mysql con funciones

Exactamente es lo que cronosmen dice: Los lenguajes de programación están optimizados para realizar tareas con cadenas que carecen de utilidad en el proceso de datos en una base de datos. No te olvides que SQL no es estrictamente un "lenguaje de programación", sino de consultas, por lo que su desarrollo apunta a otras tareas.

En ese sentido, existen formas de obtener algo como lo que pides, pero es mucho más complejo, con más pasos y con funciones poco eficientes, que si lo hicieras en el lenguaje de programación que uses.

Para darte una idea: Sólo el separar cada palabra requiere en SQL como mínimo un loop que recorra toda la cadena, y varios IFs para determinar cuál es el caracter que hay que almacenar y al mismo tiempo ponerlo en la variable que se necesita..

¿Cuánto código lleva a un lenguaje de programación hacer lo mismo?: Tres líneas de promedio para hacer todo... de las cuales una sola es línea para separar las palabras y obtener el caracter.

¿Se entiende por qué es preferible hacerlo por programación?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 16/05/2011, 14:07
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Respuesta: iniciales en mysql con funciones

gracias la verdar es que en java si li hice, pero me dijeron que lo haga utilizando solo funiones de mysql. gracias por las recomendaciones.
  #5 (permalink)  
Antiguo 16/05/2011, 15:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: iniciales en mysql con funciones

Bueno, si se trata de una tarea de estudio, te podemos orientar...
Entre las FAQs de MySQL vas a encontrar algo que te servirá: Eliminar letras de una cadena y recuperar un entero
Esta función, si lo observas bien, recorre todos los caracteres de la cadena, va eliminando todo lo que no sean números y poniendo lo que queda en una variable.
Lo que necesitas es una función semejante, tal que primero tome el primer caracter válido de la cadena, y luego, cuando encuentre un espacio en blanco tome el caracter siguiente y lo almacene, pero no lo haga cuando no sea espacio.
Infortunadamente esto te dará como resultado una función sumamente rústica, muy ineficiente, pero eso es lo que te piden.

Toma de base el barrido de esa función y ponle lo que necesites.

Sugerencias:
- LOCATE para determinar a posición del siguiente espacio en blanco.
- TRIM() para eliminar espacios adelante y atrás.
- SUBSTRING() para tomar el caracter que necesites.
- LEFT() o RIGHT() para tomar una cadena desde una posicion dada desde la derecha o la izquierda.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 16/05/2011 a las 15:12
  #6 (permalink)  
Antiguo 16/05/2011, 15:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: iniciales en mysql con funciones

Si es con una función, podrías mirar aquí:
http://www.forosdelweb.com/f86/como-...-mysql-320466/

No lo he probado.

Etiquetas: iniciales
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:51.