none
Ayuda. Crear codigo de 13 digitos de una tabla y mantener los primeros 6 de una misma numeracion

    Question

  • Necesito ayuda, quiero crear un campo codigo a una tabla que me almacenara 13 digitos pero quiero que los primeros 6 el numero sea 800640  y los otros 7 incremental que usen 7 digitos ejemplo:

    nombre          Codigo

    Crema        8006400000001

    Gaseosa    8006400000002

    Queso        8006400000003

    Favor alguien me puede ayudar.

    Tuesday, December 11, 2012 6:04 PM

Answers

  • No logro entender la razón para almacenarlo así... Si quieres que almacene 0s a la izquierda debes almacenarlo como VARCHAR no como BIGINT,  para lograr esto puedes puedes guardar el valor en tu BD como INT y al momento de presentar la información puedes utilizar el código que te pase:

    declare @table table( id int )
    
    insert into @table 
    values(1223),(1224),(1225),(1226)
    
    
    select * , right( '0000000000' + cast(id as varchar) , 10  )
    from @table 

    SALUDOS !


    Sergio Sánchez Arias

    • Marked as answer by William Castro Wednesday, December 12, 2012 4:33 PM
    Wednesday, December 12, 2012 3:27 PM

All replies

  • Que tal William...

    Cual es el objetivo de utilizar este digito ?

    Te pregunto esto ya que si solo es para presentación, en tu tabla puedes generar un campo entero autoincrementable y si tu valor 800640 es fijo puedes concatenarlo en el query de la siguiente manera...

    declare @table table( id int )
    
    insert into @table 
    values(1),(2),(3),(4)
    
    
    select * , '800640'+ right( '0000000' + cast(id as varchar) , 7 )
    from @table 

    Es decir, lo único que tendrás en tu base será el campo autoincrementable, ahora bien.. si el valor 800640 dependerá de ciertas condiciones, puedes crear otro campo donde tengas este valor almacenado y de igual manera lo concatenes en tu query así:

    declare @table table( id int, valor int )
    
    insert into @table 
    values(1,800640),(2,800640),(3,800650),(4,800650)
    
    
    select * , valor+ right( '0000000' + cast(id as varchar) , 7 )
    from @table 

    Prueba así y nos dices como te fue...

    SALUDOS !


    Sergio Sánchez Arias

    Tuesday, December 11, 2012 6:26 PM
  • Puedes crear una columna Identity de tipo BigInt que empiece en 8006400000001.


    El castellano no es mi lengua materna. Discúlpenme por los errores gramaticales, y, si pueden, corríjanme en los comentarios, o por correo electrónico. ¡Muchas gracias! Blog: http://about.me/GeriReshef

    Tuesday, December 11, 2012 8:16 PM
  • Geri_Reshef

    Como puedo hacer un identity que inicie con 1239 ?

    Tuesday, December 11, 2012 8:42 PM
  • de esta manera

    CREATE TABLE tuTabla
    (
     id bigint IDENTITY(12390000001,1) 
    )

    o aqui 


    Sergio Sánchez Arias

    • Proposed as answer by Geri_ReshefMVP Wednesday, December 12, 2012 3:49 AM
    Tuesday, December 11, 2012 9:59 PM
  • Y si le quiero poner ceros a la izquierda?

    ejemplo 0000001223

    es de la misma manera, porque hace caso omiso a los ceros a la izquierda

    Wednesday, December 12, 2012 2:52 PM
  • No logro entender la razón para almacenarlo así... Si quieres que almacene 0s a la izquierda debes almacenarlo como VARCHAR no como BIGINT,  para lograr esto puedes puedes guardar el valor en tu BD como INT y al momento de presentar la información puedes utilizar el código que te pase:

    declare @table table( id int )
    
    insert into @table 
    values(1223),(1224),(1225),(1226)
    
    
    select * , right( '0000000000' + cast(id as varchar) , 10  )
    from @table 

    SALUDOS !


    Sergio Sánchez Arias

    • Marked as answer by William Castro Wednesday, December 12, 2012 4:33 PM
    Wednesday, December 12, 2012 3:27 PM