Buscar en el Blog

martes, 4 de febrero de 2014

Generar Codigo Alfanumerico en Sql Server

¿Como generar un codigo alfanumerico para poder insertar en nuestra tabla?
Primero vamos con la estructura de la tabla de ejemplo


Nota: Como pueden apreciar el campo CodAlumno es del tipo Char de longitud 4, este campo almacenara el codigo con el siguiente formato:

Primera Letra del nombre +000
Por ejemplo L001



Declaramos nuestras variables o parametros de entrada que en este caso son el nombre y el apellido
la Variable Autoincremento sera la que contendra el valor maximo del codigo, para eso hacemos uso de la funcion max , pero el codigo es del tipo string, por eso realizamos una extraccion y su respectiva conversion de dato al tipo numerico.

luego simplemente incrementamos en uno con Set @Autoincremento=@Autoincremento + 1
la variable @numero contendra la parte del codigo numero, pero sera del tipo char.
Con la funcion extraemos los tres ultimos caracteres para obtener un numero con formato 001.


Probando el procedimiento Almacenado

3 comentarios:

  1. SOLO UNA CRITICA CONSTRUCTIVA ES PRIMORO CREATE Y DESPUES ALTER PARA LOS QUE NO SABEN
    create procedure sp_insertar @nom varchar(30),@ape varchar (30)
    as
    begin

    declare @autoincremento int, @numero varchar (3), @codigo char (4)
    set @codigo=SUBSTRING(@nom,1,1)
    select @autoincremento=ISNULL(max(convert(int, right(CodAlumno,3))),0) from Ejemplo
    set @autoincremento=@autoincremento + 1
    SELECT @numero=RIGHT('00'+ CONVERT(VARCHAR, @autoincremento),3)
    set @codigo=RTRIM(@codigo) + RTRIM(@numero)
    print 'codigo: '+ @codigo
    insert into Ejemplo values (@codigo, @nom, @ape)
    end


    Y DESPUES
    alter procedure sp_insertar @nom varchar(30),@ape varchar (30)
    as
    begin

    declare @autoincremento int, @numero varchar (3), @codigo char (4)
    set @codigo=SUBSTRING(@nom,1,1)
    select @autoincremento=ISNULL(max(convert(int, right(CodAlumno,3))),0) from Ejemplo
    set @autoincremento=@autoincremento + 1
    SELECT @numero=RIGHT('00'+ CONVERT(VARCHAR, @autoincremento),3)
    set @codigo=RTRIM(@codigo) + RTRIM(@numero)
    print 'codigo: '+ @codigo
    insert into Ejemplo values (@codigo, @nom, @ape)
    end

    ResponderEliminar