none
Rellenar con ceros a la izquierda en sql server 2005 RRS feed

  • Pregunta

  • Buenas tardes compañeros. Tengo el siguiente problema y les pido su amable colaboracion.

    Tengo una tabla llamada FACTURAS la cual tenia comoo clave primaria un campo Numero que era entero autoincremental.

    El asunto es que este campo de la clave primaria ha cambiado por char(12) un string y necesitamos rellenar con ceros a la izquierda los valores entero de esta forma:

    ANTES 

    Numero                                                             Ahora

     

    1                                                                        00001

    2                                                                        00002

    3 hasta 145                                                       00003

                                                                              00145

    Necesitamos rellenar con los ceros a la izquierda necesarios para cada numero entero del 1 hasta el 145 donde va el consecutivo ya que se va a cambiar por un consecutivo manejado por el sistema que va desde el 00001 hasta el 10000.

    Como puedo hacer un UPDATE masivo a este campo Numero ahora tipo string de la tabla FACTURAS?

    muchas gracias.


    • Editado Mariande jueves, 6 de octubre de 2011 20:51
    jueves, 6 de octubre de 2011 20:50

Respuestas

  • Espero te sirva lo siguiente:

     

    
    Update  Factura
    Set Numero=RIGHT('00000' + Ltrim(Rtrim(Numero)),5)
    

     

    Saludos

     

    • Propuesto como respuesta Gaalsi jueves, 6 de octubre de 2011 21:09
    • Marcado como respuesta Mariande jueves, 6 de octubre de 2011 21:18
    jueves, 6 de octubre de 2011 21:09
  • Una pregunta, tu nuevo campo es un tipo char(12) y necesitas que te rellene con 0, siempre que este dentro del rango de 1 a 145, la pregunta es si necesitas que te ocupe las doce posiciones y rellene de 0 hasta completar dicha longitud, o solo requieres ponerle cuatro ceros?.

    Si solo necesitas 4 ceros perfectamente puedes hacer un update filtrando, algo como:

    UPDATE FACTURA
    SET Numero='0000' + Numero
    WHERE CAST(Numero AS INT) <=145

    Aclara la consulta y con gusto te podemos apoyar o si con este ejemplo te basta.

     


    "El talento es una disciplina tenaz y una larga paciencia"  Gustave Flaubert

     Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

     

    • Marcado como respuesta Mariande jueves, 6 de octubre de 2011 21:18
    jueves, 6 de octubre de 2011 21:03

Todas las respuestas

  • Una pregunta, tu nuevo campo es un tipo char(12) y necesitas que te rellene con 0, siempre que este dentro del rango de 1 a 145, la pregunta es si necesitas que te ocupe las doce posiciones y rellene de 0 hasta completar dicha longitud, o solo requieres ponerle cuatro ceros?.

    Si solo necesitas 4 ceros perfectamente puedes hacer un update filtrando, algo como:

    UPDATE FACTURA
    SET Numero='0000' + Numero
    WHERE CAST(Numero AS INT) <=145

    Aclara la consulta y con gusto te podemos apoyar o si con este ejemplo te basta.

     


    "El talento es una disciplina tenaz y una larga paciencia"  Gustave Flaubert

     Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

     

    • Marcado como respuesta Mariande jueves, 6 de octubre de 2011 21:18
    jueves, 6 de octubre de 2011 21:03
  • Espero te sirva lo siguiente:

     

    
    Update  Factura
    Set Numero=RIGHT('00000' + Ltrim(Rtrim(Numero)),5)
    

     

    Saludos

     

    • Propuesto como respuesta Gaalsi jueves, 6 de octubre de 2011 21:09
    • Marcado como respuesta Mariande jueves, 6 de octubre de 2011 21:18
    jueves, 6 de octubre de 2011 21:09
  • Muchas gracias a todos por sus opciones lo realice con la siguiente funcion

     

     

    UPDATE TBLFACTURASN

    SET NUMERO= REPLICATE('0', (5 - LEN(NUMERO))) + NUMERO

    FROM TBLFACTURASN

     

    Las expuestas tambien funcion =)
    • Editado Mariande jueves, 6 de octubre de 2011 21:21
    • Propuesto como respuesta cesardgo jueves, 11 de enero de 2018 14:50
    jueves, 6 de octubre de 2011 21:18
  • Gracias.. por su colaboración ... me ayudo bastante en una consulta de SQLSERVER
    lunes, 21 de enero de 2013 16:12
  • Gracias super util.
    jueves, 5 de mayo de 2016 19:19
  • Me funciono, gracias!
    viernes, 4 de noviembre de 2016 15:54
  • Excelente Solución. Muchas gracias. Me salvó la vida en mi trabajo.
    miércoles, 15 de abril de 2020 14:43