Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/09/2016, 08:32
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: set @variable concatenar con un numero

de que asi no se hace una asignacion de valores dinamica, para eso tendrias que construir un query dinamico, te recomiendo que investigues sobre como regresar valores usando la instruccion sp_executesql

tu query quedaria de esta manera:

Código SQL:
Ver original
  1. DECLARE @document VARCHAR(64),@campo VARCHAR(25),@campov VARCHAR(25),@campo1 VARCHAR(35),@campo2 VARCHAR(35),@campo3 VARCHAR(35), @pos, @pos1
  2. DECLARE @query Nvarchar(MAX)
  3.  
  4. SELECT @document = 'Reflectors;are;vital;safety components55;of your bicycle.'
  5.  
  6. SET @campov= SUBSTRING(@document,@pos,@pos1-@pos)
  7. SET @query=@campo + CONVERT(VARCHAR,@intFlag) + '=' + @campov
  8. EXEC sp_executesql @query

ahora a lo que comentaste que traes un archivo con valores separados por ",", de ser asi podrias usar un BCP insert o un bulk insert para poner tus datos en orden, otra cosa que podrias usar es una funcion como esta:

Código SQL:
Ver original
  1. /****** Object:  UserDefinedFunction [dbo].[SplitApplication]    Script Date: 10/19/2010 15:12:35 ******/
  2. SET ANSI_NULLS ON
  3. GO
  4.  
  5. SET QUOTED_IDENTIFIER ON
  6. GO
  7.  
  8. CREATE FUNCTION [dbo].[SplitApplication](@applicationid VARCHAR(2000))
  9.  
  10. RETURNS @RtnValue TABLE
  11. (
  12. Id INT IDENTITY(1,1),
  13. DATA nvarchar(100)
  14. )
  15. AS
  16. BEGIN
  17. DECLARE @Cnt INT, @SplitOn nvarchar(5)
  18. SET @SplitOn = ','
  19. SET @Cnt = 1
  20.  
  21. While (Charindex(@SplitOn,@applicationid)>0)
  22. BEGIN
  23. INSERT INTO @RtnValue (DATA)
  24. SELECT
  25. DATA = ltrim(rtrim(SUBSTRING(@applicationid,1,Charindex(@SplitOn,@applicationid)-1)))
  26.  
  27. SET @applicationid = SUBSTRING(@applicationid,Charindex(@SplitOn,@applicationid)+1,len(@applicationid))
  28. SET @Cnt = @Cnt + 1
  29. END
  30.  
  31. INSERT INTO @RtnValue (DATA)
  32. SELECT DATA = ltrim(rtrim(@applicationid))
  33.  
  34. RETURN
  35. END
  36.  
  37. GO

una vez creada la funcion la usamos de la siguiente manera:

Código SQL:
Ver original
  1. how TO USE :
  2.  
  3. SELECT * FROM TABLE WHERE DATA IN (
  4.  
  5. SELECT * FROM SplitApplication('1,1,1,1')
  6. )

en tu caso cambiarias la "," por ";"
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 13/09/2016 a las 08:43