SQL Server - Extraer palabras de cadena texto

 
Vista:
sin imagen de perfil

Extraer palabras de cadena texto

Publicado por juan (3 intervenciones) el 16/07/2015 20:39:06
Hola!

Quiero extraer varias parabras de una cadena, que solo existe coincitencia en la fraces de inicio, pero al final existe un character que se puede retetir en la cadena.
Ejemplo:
Registro 1 jdjdfwe^ kdjsklfjsdkjfkl^ dfaklfjklasd^ INFORMACION=texto a extraer^ fkdsfkslj^ ldskffjjferierjf^ otra_palabra=fskkdsk^bgdf

Registro 2 dsfdfgdf^ erty5756^ dffgtrrhd^ INFORMACION=sacar texto5^ fdg12gdf^ 34545tdfggsdgdff^ otra_palabra=24g5dg^ dfgdf


Ahora bien: yo quiero extraer todas las frases que esta entre la pabra que inicia con 'INFORMACION=' y el character '^' que le sigue. Para el caso de ejemplo serian las fraces:

texto a extraer
sacar texto5
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Extraer palabras de cadena texto

Publicado por Isaias (4558 intervenciones) el 17/07/2015 18:57:53
Se podría resolver con una FUNCION de usuario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE FUNCTION dbo.fn_GetAWord (@RecordWord varchar(500))
RETURNS varchar(50)
AS
 BEGIN
  SET @RecordWord = SUBSTRING(@RecordWord, PATINDEX('%=%', @RecordWord) + 1, LEN(@RecordWord))
  RETURN(SELECT SUBSTRING(@RecordWord, 1, CHARINDEX('^', @RecordWord) - 1))
 END
 
-- Declaro mi tabla e inserto los registros para el ejemplo
DECLARE @MyTableVar table(Record varchar(500))
INSERT INTO @MyTableVar VALUES('jdjdfwe^ kdjsklfjsdkjfkl^ dfaklfjklasd^ INFORMACION=texto a extraer^ fkdsfkslj^ ldskffjjferierjf^ otra_palabra=fskkdsk^bgdf'),
('dsfdfgdf^ erty5756^ dffgtrrhd^ INFORMACION=sacar texto5^ fdg12gdf^ 34545tdfggsdgdff^ otra_palabra=24g5dg^ dfgdf ')
 
-- Ejecuto la funcion, para extraer las palabras
 SELECT dbo.fn_GetAWord(Record) FROM @MyTableVar
 
-- Resultado
texto a extraer
sacar texto5
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

Extraer palabras de cadena texto

Publicado por jams (93 intervenciones) el 17/07/2015 20:52:47
Buenas tardes tyo no recomendaría hacer una función porque el proceso podría ser tardado, podrias hacer lo siguiente

declare @var varchar(1000)
declare @var1 varchar(1000)
declare @resul varchar(1000)



set @var='jdjdfwe^ kdjsklfjsdkjfkl^ dfaklfjklasd^ INFORMACION=texto a extraer^ fkdsfkslj^ ldskffjjferierjf^ otra_palabra=fskkdsk^bgdf '
set @var1='dsfdfgdf^ erty5756^ dffgtrrhd^ INFORMACION=sacar texto5^ fdg12gdf^ 34545tdfggsdgdff^ otra_palabra=24g5dg^ dfgdf '
set @resul=''



set @resul= substring(@var,CHARINDEX('INFORMACION',@var)+ 12 ,(CHARINDEX('^',@var,CHARINDEX('INFORMACION',@var))- CHARINDEX('INFORMACION',@var))-12)


print @resul

para probar la opción 2 solo cambia el valor de la variable @var por @var1


Ojala y te sirva es algo mas simple y mas sencillo que puedes implementar en tu mismo código sin hacer un llamado a una funcion

PD en la otra propuesta que te hacen si encuentras otro igual dentro de la cadena ya no funciono

Saludos y 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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Extraer palabras de cadena texto

Publicado por Isaias (4558 intervenciones) el 20/07/2015 19:05:25
Estaría muy bien tu propuesta, solo que manejas posiciones fijas, ¿Qué pasa si cambian?
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

Extraer palabras de cadena texto

Publicado por juan (3 intervenciones) el 20/07/2015 19:46:27
Hola!

Isaias y jams, muchas gracias por la info.

Sabes que la función me genero dato cuando le hice un top 10, pero después le agregue un top100 y me presenta un error.


Msg 537, Level 16, State 2, Line 1
Invalid length parameter passed to the LEFT or SUBSTRING function.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Extraer palabras de cadena texto

Publicado por Isaias (4558 intervenciones) el 20/07/2015 20:27:25
Seguramente no se esta cumpliendo la regla que exista la palabra INFORMACION= o bien no se cumple con las reglas que tu pusiste en tu posta original
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

Extraer palabras de cadena texto

Publicado por jams (93 intervenciones) el 05/08/2015 17:39:27
Hola buenas tardes para no variar el estilo de este foro la persona que postea no reporta finalmente si le sirvió o no o si siquiera probo las propuestas de solución.

Isaías las únicas posiciones fijas que se manejan en mi sugerencia son las de las longitudes del texto "INFORMACION=" que son 12 caracteres no se maneja ninguna otra posición fija.






Saludos y 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