SoloCodigo

Bases de Datos => Otras Bases de Datos => Mensaje iniciado por: Güorker en Viernes 21 de Enero de 2005, 14:12

Título: Desconocimiento De Transact Sql
Publicado por: Güorker en Viernes 21 de Enero de 2005, 14:12
Hola,

Necesito hacer un prodecidmiento en Transact SQL (para SQL Server) que sea capaz de manejar strings. ME explico:

Yo hago una Select a una tabla de la base de datos y en uno de sus campos me devuelve lo siguiente:

"W*,Linux,Solaris"

Lo que estoy buscando es una manera de coger ese string y hacerle un split o algo así y dividir el string en tres, es decir, en "W*", "Linux", "Solaris".

El resto de la función no me supone ningun problema, pero lo de partir los strings me trae de cabeza!

Alguna idea?

Gracias de antemano por vuestro interes y tiempo  :)
Título: Re: Desconocimiento De Transact Sql
Publicado por: JuanK en Sábado 22 de Enero de 2005, 04:03
no conozco esa herramienta pero normalmente el builtin
SUBSTR te ayuda con eso.
Título: Re: Desconocimiento De Transact Sql
Publicado por: alexis salinas en Domingo 23 de Enero de 2005, 21:23
Hacer un split como tal no se puede, pero tal vez si explicas mejor lo que necesitas hacer te pueda ayudar.
Título: Re: Desconocimiento De Transact Sql
Publicado por: Güorker en Lunes 24 de Enero de 2005, 12:51
Hola,

lo que necesitaba hacer era cambiar unos valores que tenía en una columna de una tabla de la base de datos, y luego eliminar los elementos repetidos.
Pero despues de consultar la ayuda de SQL Server y un ratito, conseguí solucionar mi problema.

EJ:

Lo que quería hacer es cambiar el valor 'W9x' por los valores 'W95,W98'. Eso en si es muy facil, pero mi problema venia cuando en un registro había los valores: 'W95,W98,W9x'. En este caso, si hiciese el cambio normal, los valores se quedarian repetidos: 'W95,W98,W95,W98'.

Por eso quería algo para poder eliminar los valores repetidos.

Al final opté por la siguiente solución:

En un procedimiento voy recorriendo los registros y voy obteniendo el valor del campo que se carga en @SOs.
Entonces:

SET @SOs = REPLACE ( @SOs , 'W9x' , 'W95,W98' )   --Reemplazo W9x por W95,W98

Y:

SET @SOs = SUBSTRING ( @SOs , 0 , CHARINDEX ( 'W95' , @SOs ) + 3 ) +
         REPLACE ( SUBSTRING ( @SOs , CHARINDEX ( 'W95' , @SOs ) + 3 , 5000 ) , ',W95' , '' )
      SET @SOs = SUBSTRING ( @SOs , 0 , CHARINDEX ( 'W98' , @SOs ) + 3 ) +
         REPLACE ( SUBSTRING ( @SOs , CHARINDEX ( 'W98' , @SOs ) + 3 , 5000 ) , ',W98' , '' )

--Quito los valores repetidos


Gracias por vuestro tiempo e interes, pero ya solucioné mi problema   :comp: