none
concatenar variables RRS feed

  • Pregunta

  • Buenas, una ayuda con esto que no funciona bien

    DECLARE @document varchar(64),@campo varchar(25),@campov varchar(25),@campo1 varchar(35),@campo2 varchar(35),@campo3 varchar(35), @pos, @pos1

    SELECT @document = 'Reflectors;are;vital;safety components55;of your bicycle.'  

    set @campov= SUBSTRING(@document,@pos,@pos1-@pos) 
    select @campo + '' + CONVERT(VARCHAR,@intFlag) + '=' + @campov

    el select deberia mostrar datos y no muestra nada

    si ejecuto solo asi: select @campo1 o @campo2 o @ campo3  funciona bien pero lo anterior no,Donde estoy cometiendo el error

    sql server 2008

    gracias


    lunes, 12 de septiembre de 2016 20:19

Respuestas

  • chuchufuentes,

    No termino de entenderte, ¿lees cada fila mediante la instrucción WHILE?

    Si es así no es lo correcto, o por lo menos entiendo que existen mejores formas de afrontar el caso y una de ellas es haciendo uso de BULK INSERT, que permite importar datos desde un archivo a una tabla de base de datos (o a cualquier contenedor físico o en memoria), te recomiendo leas el siguiente enlace: BULK INSERT.

    Te dejo un ejemplo simple para terminar de redondear la idea, considerando que tu separador de campos es el signo de punto y coma ';' y entre fila y fila hay un salto de línea:

    CREATE TABLE #Temp
    (
        Campo1 nvarchar(4000),
        Campo2 nvarchar(4000),
        Campo3 nvarchar(4000),
        /*Agregar las columnas necesarias*/     
    );
    
    BULK INSERT #Temp 
        FROM 'D:\MiArchivoTexto.TXT'
        WITH 
    	   (
    		  FIELDTERMINATOR = ';', 
    		  ROWTERMINATOR ='\n'
    	   )
    
    /*Leer los datos importados*/
    SELECT * FROM #Temp;



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Edu Martinez miércoles, 14 de septiembre de 2016 16:21
    • Marcado como respuesta Laura CeglzModerator viernes, 16 de septiembre de 2016 18:03
    martes, 13 de septiembre de 2016 16:00

Todas las respuestas

  • Hola chuchufuentes

    te sale algun error? debería funcionar así:

    select @campo + ' ' + CONVERT(VARCHAR,@intFlag) + '= ' + @campov

    Saludos

     

    Javier

    lunes, 12 de septiembre de 2016 20:25
  • Gracias por responder no genera error pero lista valores nulos, pero si lo hago asi

    select @campov
    select @campo + '' + CONVERT(VARCHAR,@intFlag) + '=' + @campov

    muestra los  valores de @campov pero no muestra los valores de @campo1,@campo2...@campo5

    por que lo tengo dentro de un While  End hasta 5

    Gracias


    lunes, 12 de septiembre de 2016 20:41
  • Saludos chuchu

    Saludos podrias intentar explicar de mejor manera como en que buscas y que deseas obtener creo que andas buscando varios textos sobre una linea sin poner or y por lo tanto no cumplen con los criterios de búsqueda y no te retornan nada debido a esto.

    martes, 13 de septiembre de 2016 2:07
  • chuchufuentes,

    Te recomiendo que postees el código que tienes desarrollado (veo que colocas variables y mencionas bucles que nunca muestras) y datos representativos para poder recrear el caso y apoyarte en la resolución del problema que presentas. Con sólo mostrar un trozo de código no es de mucha ayuda para intuir que podría estar pasando.

    Esperamos por tu feed-back.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 13 de septiembre de 2016 3:55
  • Gracias por responder, el caso que tengo es pasar una data que viene en un archivo plano que esta separado por punto y coma y son 25 datos  por cada linea y son aprox 15000 lineas,el archivo plano viene de esta manera  'Reflectors;are;vital;safety components55;of your bicycle.'   y por eso que estoy tratando de esta manera con su respectivo while - end y charinxde

    DECLARE @document varchar(64),@campo varchar(25),@campov varchar(25),@campo1 varchar(35),@campo2 varchar(35),@campo3 varchar(35), @pos, @pos1

    SELECT @document = 'Reflectors;are;vital;safety components55;of your bicycle.'  

    set @pos= charindex(';',@document )

    set @campov= SUBSTRING(@document,@pos,@pos1-@pos) 

    select @campo + '' + CONVERT(VARCHAR,@intFlag) + '=' + @campov

    Gracias

    martes, 13 de septiembre de 2016 12:43
  • chuchufuentes,

    No termino de entenderte, ¿lees cada fila mediante la instrucción WHILE?

    Si es así no es lo correcto, o por lo menos entiendo que existen mejores formas de afrontar el caso y una de ellas es haciendo uso de BULK INSERT, que permite importar datos desde un archivo a una tabla de base de datos (o a cualquier contenedor físico o en memoria), te recomiendo leas el siguiente enlace: BULK INSERT.

    Te dejo un ejemplo simple para terminar de redondear la idea, considerando que tu separador de campos es el signo de punto y coma ';' y entre fila y fila hay un salto de línea:

    CREATE TABLE #Temp
    (
        Campo1 nvarchar(4000),
        Campo2 nvarchar(4000),
        Campo3 nvarchar(4000),
        /*Agregar las columnas necesarias*/     
    );
    
    BULK INSERT #Temp 
        FROM 'D:\MiArchivoTexto.TXT'
        WITH 
    	   (
    		  FIELDTERMINATOR = ';', 
    		  ROWTERMINATOR ='\n'
    	   )
    
    /*Leer los datos importados*/
    SELECT * FROM #Temp;



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Edu Martinez miércoles, 14 de septiembre de 2016 16:21
    • Marcado como respuesta Laura CeglzModerator viernes, 16 de septiembre de 2016 18:03
    martes, 13 de septiembre de 2016 16:00
  • Gracias por contestar,claro que si funcionó y gracias de nuevo
    miércoles, 14 de septiembre de 2016 12:25