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

[SOLUCIONADO] Extraer variables de un varchar

Estas en el tema de Extraer variables de un varchar en el foro de SQL Server en Foros del Web. hola compañ[email protected], Mi duda es, se puede extraer un número n de variables contenidas en una cadena, es decir, si tengo un valor como el ...
  #1 (permalink)  
Antiguo 11/03/2013, 16:29
 
Fecha de Ingreso: octubre-2009
Ubicación: Guapiles
Mensajes: 11
Antigüedad: 10 años
Puntos: 0
Extraer variables de un varchar

hola compañ[email protected],

Mi duda es, se puede extraer un número n de variables contenidas en una cadena, es decir, si tengo un valor como el siguiente:

'SELECT * FROM TABLA WHERE LOQUESEA = @LOQUESEA AND ALGOMAS = @ALGOMAS'

¿Existe una manera para extraer @LOQUESEA y @ALGOMAS para asignarlas a otra variable? La idea es asignarla a una variable de PARAMETROS por decir:

SET @PARAMETROS = N'@LOQUESEA varchar(4), @ALGOMAS bigint';

por ejemplo.

Muchas gracias
  #2 (permalink)  
Antiguo 11/03/2013, 16:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.404
Antigüedad: 13 años, 2 meses
Puntos: 774
Respuesta: Extraer variables de un varchar

si ya lo traes en una cadena de este tipo

'SELECT * FROM TABLA WHERE LOQUESEA = @LOQUESEA AND ALGOMAS = @ALGOMAS'

ya traes el valor de las variables no? entonces podrias usarlas donde quieras, o la verdad no entendi que necesitas jejejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 12/03/2013, 09:23
 
Fecha de Ingreso: octubre-2009
Ubicación: Guapiles
Mensajes: 11
Antigüedad: 10 años
Puntos: 0
Respuesta: Extraer variables de un varchar

jajaja no eso no, toda esa sentencia se encuentra en una cadena. Por lo que requiero es poder hacer un substring de esa cadena para obtener tantas variables aparezcan en ella, es decir, un substring o algo que me ayude a hacer:
substring(cadena, x, y) = @VARIABLE1
substring(cadena, z, w) = @VARIABLE2
.... etc.

Ponerle que empiece con @ y finalice la variable con [espacio]

así obtener las variables que aparecen en el query, sin importar cuantas sean o como se llamen

Saludos
  #4 (permalink)  
Antiguo 12/03/2013, 09:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.404
Antigüedad: 13 años, 2 meses
Puntos: 774
Respuesta: Extraer variables de un varchar

a ya, si definimos que sea @ inicio de cadena y ' ' fin de cadena podemos usar un charindex y un substring :P con algo como esto:

Código SQL:
Ver original
  1. DECLARE @query VARCHAR(MAX)
  2. DECLARE @query2 VARCHAR(MAX)
  3. DECLARE @x INT
  4. DECLARE @fin INT
  5. DECLARE @continue INT
  6.  
  7. CREATE TABLE #temp(
  8. VALUE VARCHAR(MAX)
  9. )
  10.  
  11. SET @x=1
  12. SET @query='select * FROM TABLA WHERE LOQUESEA = @LOQUESEA AND ALGOMAS = @ALGOMAS [email protected] [email protected] '
  13. while @x<=100
  14. BEGIN
  15. print 'entra'
  16.     INSERT INTO #temp
  17.     SELECT SUBSTRING(@query,CHARINDEX('@',@query,1),charindex(' ',@query,CHARINDEX('@',@query,1))-CHARINDEX('@',@query,1))
  18.     SELECT @query2=SUBSTRING(@query,charindex(' ',@query,CHARINDEX('@',@query,1)),LEN(@query))
  19.    
  20.     SELECT @continue=charindex(' ',@query,CHARINDEX('@',@query,1))
  21.     SELECT @fin=LEN(@query)+1
  22.    
  23.     IF @continue=@fin  
  24.         SET @x=100
  25.    
  26.     IF @x<>100
  27.     BEGIN  
  28.         INSERT INTO #temp
  29.         SELECT SUBSTRING(@query2,CHARINDEX('@',@query2,1),charindex(' ',@query2,CHARINDEX('@',@query2,1))-CHARINDEX('@',@query2,1))
  30.         SELECT @query2=SUBSTRING(@query2,charindex(' ',@query2,CHARINDEX('@',@query2,1)),LEN(@query2))
  31.         SELECT @continue=charindex(' ',@query2,CHARINDEX('@',@query2,1))
  32.         SELECT @fin=LEN(@query2)+1
  33.     END
  34.     SET @query=@query2
  35.     SET @x=@x+1
  36.    
  37.     IF @continue=@fin  
  38.         SET @x=100
  39. END
  40.  
  41. SELECT * FROM #temp
  42. DROP TABLE #temp
  43.  
  44. ----------------------Resultado--------------------------------
  45. @LOQUESEA
  46. @ALGOMAS
  47. @variable
  48. @aquimero

Lo unico que debes de tener en cuenta es que siempre te va a buscar @ como inicio y ' ' como fin de busqueda de la variable, si te fijas en la cadena que puse

'select * FROM TABLA WHERE LOQUESEA = @LOQUESEA AND ALGOMAS = @ALGOMAS [email protected] [email protected] '

la ultima variable tiene un espacio en blanco antes de la comilla simple, si no lo pones pues no junciona jajajajaja :P

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 12/03/2013, 18:13
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.404
Antigüedad: 13 años, 2 meses
Puntos: 774
Respuesta: Extraer variables de un varchar

te sirvio o no.....porque la verdad me encanto como me quedo el query jajajaja (modestia aparte)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 14/03/2013, 13:29
 
Fecha de Ingreso: octubre-2009
Ubicación: Guapiles
Mensajes: 11
Antigüedad: 10 años
Puntos: 0
Respuesta: Extraer variables de un varchar

Hola Libra, gracias por responder.

Sí me ha servido y lo he adaptado a lo que ocupaba.

Muchas gracias!!

Etiquetas: select, tabla, varchar, variables
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:13.