SoloCodigo
Bases de Datos => Otras Bases de Datos => Mensaje iniciado 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 :)
-
no conozco esa herramienta pero normalmente el builtin
SUBSTR te ayuda con eso.
-
Hacer un split como tal no se puede, pero tal vez si explicas mejor lo que necesitas hacer te pueda ayudar.
-
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: