SQL Server - trocear un campo y tabajar con los trozos

   
Vista:

trocear un campo y tabajar con los trozos

Publicado por sergio (11 intervenciones) el 09/02/2011 20:40:56
Hola a todos.

Vereis tengo una tabla con 5 campos, y uno de ellos, comentario, tiene este contenido:

snoopy[29191]:\n[steve,\nuid:1000\nsid:28907]:\nls\n--color=auto\n\r\n\n
snoopy[29191]:\n[steve,\nuid:3\nsid:28907]:\nls\n--color=auto\n\r\n\n
snoopy[29197]:\n[steve,\nuid:15\nsid:28907]:\nuname\n-r\n\r\n\n
snoopy[29197]:\n[steve,\nuid:0\nsid:28907]:\nuname\n-r\n\r\n\n
snoopy[29197]:\n[steve,\nuid:15\nsid:28907]:\nuname\n-r\n\r\n\n
snoopy[29197]:\n[steve,\nuid:0\nsid:28907]:\nuname\n-r\n\r\n\n

De este texto solo me interesa la parte de nuid:XXXX, hasta el ]. Los XXXX son un valor numerico. Mi intencion es conseguir una nueva tabla donde aparezaca:

usuario nº de veces

1000 1
3 1
15 2
0 1

Con lo que tengo problemas es con trocear el contenido y hacer la nueva tabla con el total de veces que aparece cada codigo de usuario.

Me podeis echar una mano, por favor?. O si supierais donde hay un ejemplo similar tambien me vendria bien para coger referencias

Muchas gracias por adelantado y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:trocear un campo y tabajar con los trozos

Publicado por flaviovich (32 intervenciones) el 09/02/2011 22:06:57
Creo que asi debe funcionar:

select usuario, count(1)
from (
select substring(comentario, charindex('nuid:',comentario)+6, charindex('\',comentario,charindex('nuid:',comentario))-1) as usuario
from tutabla
) t
group by usuario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por sergio (11 intervenciones) el 10/02/2011 12:51:46
hola.
muchas gracias por responder.
tengo una duda. Que indica la "t"?, por que es necesaria.
Sintacticamente me dice que es correcta, pero al ejecutarla me dice que:
El parámetro de longitud pasado a la función SUBSTRING no es válido.

me puedes ayudar?

un saludo flaviovich.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por flaviovich (32 intervenciones) el 10/02/2011 15:01:53
Perdon, asi es:

select usuario, count(1)
from (
select substring(comentario, charindex('nuid:',comentario)+5, charindex('\',comentario,charindex('nuid:',comentario))-charindex('nuid:',comentario)-5) as usuario
from @tutabla
) t
group by usuario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por sergio (11 intervenciones) el 10/02/2011 16:20:27
buenas.
llevo un rato dandole vueltas y no consigo ke me funcione. me vuelve a decir que
El parámetro de longitud pasado a la función SUBSTRING no es válido y no se por ke.

un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por flaviovich (32 intervenciones) el 10/02/2011 16:50:06
Muestrame tu codigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por sergio (11 intervenciones) el 10/02/2011 20:06:54
el codigo es el ke tu me pasastes

select usuario, count(1)
from (
select substring(comentario, charindex('nuid:',comentario)+5, charindex('\',comentario,charindex('nuid:',comentario))-charindex('nuid:',comentario)-5) as usuario
from tb_php_snoopy
) t
group by usuario

y no consigo ver el error de la longitud en el substring

un saludo y muchas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por flaviovich (32 intervenciones) el 10/02/2011 20:19:59
Por lo visto no todos los registros de esa columna cumplen con la misma estructura.
Fijate bien en el resultado de este codigo:

select comentario, charindex('nuid:',comentario)+5, charindex('\',comentario,charindex('nuid:',comentario))-charindex('nuid:',comentario)-5
from tb_php_snoopy

No deberia haber ningun cero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por sergio (11 intervenciones) el 10/02/2011 20:50:05
lo primero, ERES UN CRACK !!!!
lo segundo, tenias razon. no me daba cuanta ke tenia un registro metido a manubrio y ke no cuadraba con el formato del comentario.
tio muchas gracias y perdon por haberte enredado tanto cuando tenia un error mio tan tonto

saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por sergio (11 intervenciones) el 10/02/2011 21:00:08
solo un preguntilla.
creia que la t que habias puesto habia sido un error pero alquitarla vi que no "compilaba" sin ella. por lo vista de igual que sea una t que sssss pero no veo el porque. me lo podrias decir??
un saludo y muchas gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trocear un campo y tabajar con los trozos

Publicado por flaviovich (32 intervenciones) el 10/02/2011 21:16:45
Toda subconsulta necesita un nombre cuando se hace referencia a alguno de sus campos.
Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar