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

Obtener texto entre tags

Estas en el tema de Obtener texto entre tags en el foro de SQL Server en Foros del Web. Buenas, tengo una situación inusual. En pocas palabras hay un campo en una tabla que tiene texto de log en el que se registra muchas ...
  #1 (permalink)  
Antiguo 09/06/2011, 07:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 54
Antigüedad: 14 años, 1 mes
Puntos: 0
Obtener texto entre tags

Buenas, tengo una situación inusual. En pocas palabras hay un campo en una tabla que tiene texto de log en el que se registra muchas cosas, pero separa cada cosa separada por tags. Ahora, al momento de visualizarlo me piden en una columna de un grid una parte y en otra columna del mismo grid otra parte. Es como si en un campo tuviera varios campos. No se si soy explicativo o no :(

Como para dar un ejemplo mas demostrativo, lo que se guarda en el registro es algo asi:

<DatosParticipante> <Campos> <Resolucion>ALGUNA RESOLUCION</Resolucion> <Comentario>ALGUN COMENTARIO</Comentario> </Campos> </DatosParticipante>

y se necesita en un registro lo que esta entre <Resolucion> y </Resolucion>, y en el otro campo lo que esta entre <Comentario> y </Comentario>.

Si alguien tiene una idea es mas que bienvenida ...

Rulo
  #2 (permalink)  
Antiguo 09/06/2011, 08:24
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Obtener texto entre tags

Bueno lo puede devolver desde tu consulta sql en columnas separadas, el campo donde almacenes esa estructura le haces una conversion a xml y posteriormente le solicitas el atributo o etiqueta requerida (o en el select donde veo que realmente lo necesitas).

seria algo como esto:
Código SQL:
Ver original
  1. SELECT CAMPO.VALUE('(/DatosParticipante/Comentario)')
  2. FROM TU_TABLA
  3.  
  4. SELECT CAMPO.VALUE('(/DatosParticipante/Comentario/@Atributo)[1]')
  5. FROM TU_TABLA

Espero te sirvan estan dos formas, prueba y cuentame como te va.

Saludos.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #3 (permalink)  
Antiguo 09/06/2011, 11:51
 
Fecha de Ingreso: marzo-2010
Mensajes: 54
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Obtener texto entre tags

Particularmente esa opcion, o no me funciono o no la supe hacer funcionar. Si estas seguro que viene por ese lado y te queres explayar, excelente :)

Se me ocurre de ir por un sbstr dinamico o alguna cosa por el estilo ... hay que analizar :(

Rulo
  #4 (permalink)  
Antiguo 09/06/2011, 12:01
 
Fecha de Ingreso: marzo-2010
Mensajes: 54
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Obtener texto entre tags

aaaaaaaaaaa, ahi entendi lo que querias hacer pero tengo un problema, no las puedo pasar a xml a las columnas propiamente dichas. Es un sistema grande que esta funcionando y eso puede llegar a complicar un poco las cosas :(

Rulo
  #5 (permalink)  
Antiguo 09/06/2011, 12:19
 
Fecha de Ingreso: marzo-2010
Mensajes: 54
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Obtener texto entre tags

ahi le encontre una vuelta si a alguien le sirve, joya ;)

SELECT SUBSTRING(campo, CHARINDEX('<Resolucion>', mensajelog) + LEN('<Resolucion>'), CHARINDEX('</Resolucion>', mensajelog) - CHARINDEX('<Resolucion>', mensajelog)- LEN('<Resolucion>'))
FROM EventosParticipantePortal

Substring obtiene una parte de la cadena entre limites, el principio lo saco de:
CHARINDEX('<Resolucion>', mensajelog) + LEN('<Resolucion>'), esto me da la posicion donde arranca la cadena que quiero encontrar propiamente dicha, teniendo en cuenta el tamaño del tag.
El final de la cadena la obtengo de :
CHARINDEX('</Resolucion>', mensajelog) - CHARINDEX('<Resolucion>', mensajelog)- LEN('<Resolucion>')
Posicion de donde termina, o sea, donde esta el </Resolucion> - (menos) posicion donde empieza, o sea, donde esta el <Resolucion> y le resto a su vez la longitud del tag y ahi nos queda solo lo que busco :)

Si a alguien le sirve, solo sume karma que no tengo nada de nada :(

Rulo
  #6 (permalink)  
Antiguo 11/06/2011, 16:49
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Obtener texto entre tags

aun asi, sigue siendo un proceso muy muy lento para un sistema bastante grande como informas, es preferible aplicar convert al tipo de dato correspondiente es mucho mejor trabajar con tipos nativos, pero igual eso es la eleccion de cada quien.

aun asi tambien es una solucion je je je

Saludo,
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....

Etiquetas: tags
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 12:49.