elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 03:47  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos
| | | |-+  ¿sentencia en MYSQL dividir cadenas y devolver un recorset por cada resultado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿sentencia en MYSQL dividir cadenas y devolver un recorset por cada resultado  (Leído 1,095 veces)
efreway

Desconectado Desconectado

Mensajes: 2


Ver Perfil
¿sentencia en MYSQL dividir cadenas y devolver un recorset por cada resultado
« en: 25 Octubre 2011, 21:47 »

¿sentencia en MYSQL para dividir cadenas y devolver un recorset que contenga una fila para cada palabra?
hola, como están?
Tengo un campo en mi tabla, el cual quiero separar en varios campos pero conservando el ID al que pertenece.
Algo mas claro:
Mi tabla se llama  TMP_VARIABLES_FORMULA
y tiene la siguiente estructura:
ID       FORMULA
4    [NUMAUDEJE] [TOTAUDPLA]
5    {NUMTOTMETDISP} [NUMMETUSOINMPROP]    
6    [NUMTOTMETDISP] {NUMMETUSOINMCOM} [NUMTOTMETDISP]     [NUMMETUSOINMCOM] {NUMTOTMETDISP} {NUMMETUSOINMCOM}       
7    [NUMTOTMETDISP] [NUMMETUSOINMARR]    
8    [NUMMETARRUSADM] [NUMMETCOMUSADM] [NUMMETPROUSADM]
9    [NUMMETARRUSACAD] [NUMMETCOMUSACAD] [NUMMETCOMUSADM] [NUMMETPROUSADM]

necesito separar de la siguiente manera:
ID             VARIABLE
4                [NUMAUDEJE]
4                [TOTAUDPLA]
........
6                [NUMTOTMETDISP]
6               {NUMMETUSOINMCOM]
6               {NUMTOTMETDISP}
6               [NUMMETUSOINMCOM]
6              {NUMTOTMETDISP}
6              {NUMMETUSOINMCOM
.................
y asi con cada uno de los campos, los resultados se guardarían en otra tabla.
Si notamos la separacion se podria lograr a traves de los espacios en blanco que existen, pero ademas hay que tener en cuenta que la cantidad de palabras es diferente.
 Con esta sentencia logra encontrar la cantidad de palabras que existen, a lo cual si se coloca dentro de un ciclo se le colocaria hasta cantidad-1
sentencia:


SELECT (LENGTH(IND.FOR_ID_VAR_O_IND) - LENGTH(REPLACE(IND.FOR_ID_VAR_O_IND,' ',''))+1)

FROM TMP_VARIABLES_FORMULA

*****un ejemplo claro de esto:
El siguiente ejemplo divide una cadena de texto utilizando como delimitador 'espacio' para separar las palabras y devolver un recorset que contiene una fila para cada palabra
select regexp_split_to_table('hola mundo como estas',E'\\s+') as

y el resultado es:
"hola"
"mundo"
"como"
"estas"

pero esto es en postgress pero en mi caso lo necesito para MYSQL exclusivamente, sin tener nada que ver con PHP ni nada, unicamente necesito separar dividir cadenas y devolver un  recorset que contiene una fila para cada palabra pero paramotor de base de datos MYSQL, ya sea con un procedimiento almacenado.
desde ya gracias!


En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines