05/2010
25

Auto generar ID alfanumérico en SQL SERVER

Publicado por: Eder Oscar Lázaro Rodriguez (edoswit) 
Aún no se a calificado. Sea el primero en puntuar!
Votar ahora!

Hace poco estuve trabajando en una consulta para auto generar una columna de identificacion basado en una columna de identidad. Si usted tambien tiene un requisito similar, entonces aqui esta la consulta.

DECLARE @Alumno TABLE (

IdAlumno int IDENTITY(1,1),
Codigo as 'C-' + RIGHT('000' + CONVERT(varchar, IdAlumno),5),
Nombre varchar(10)

)

INSERT INTO @Alumno VALUES ('Oscar')
INSERT INTO @Alumno VALUES ('Florcita')
INSERT INTO @Alumno VALUES ('Noelia')
INSERT INTO @Alumno VALUES ('Mijail')
INSERT INTO @Alumno VALUES ('Henry')
INSERT INTO @Alumno VALUES ('Katy')

SELECT * FROM @Alumno

(5) Comentarios

Dejame tu Comentario
  • seichi seichi Dijo:

    si insertas el id 10 o mayor, quedaria como C-00010 y no C-0010 ... ?????


    publicado el 04 de June del 2010, a las 11:37 PM
  • CESAR CESAR Dijo:
    hola quisiera que me ayuden tengo un tabla ID nuemeracion automatica me trabaja muy bien solo que quisiera que empiece a enumerar de esta manera 01 y no 1 favor a ver si me ayudannn...
    publicado el 17 de June del 2010, a las 10:10 PM
  • edoswit edoswit Dijo:
    Hola Cesar, la solucion seria algo seria que al hacer tu consulta de seleccion pongas algo asi:
    SELECT     
    CASE 
    WHEN ProductID<10 THEN  '0' + CONVERT(varchar, ProductID)
    ELSE CONVERT(varchar, ProductID)
    END,
    ProductName,
    UnitPrice
    FROM Products
    Es decir, en caso de el ID sea menor a 10 lo concatenamos con el cero adelante, espero sea tu solucion. Saludos...

    publicado el 04 de July del 2010, a las 2:37 AM
  • saikano saikano Dijo:
    Pero pq queda asi C- 2 en vez de quedar asi c-0002 y luego cambiarse a c-0010 en vez de quedar asi c- 10
    publicado el 05 de July del 2010, a las 5:03 PM
  • edoswit edoswit Dijo:

    Buena observacion Seichi, como esta queria  "C-00010" lo cual se ve feo para eso lo vamos a modifcar un poco y quedaria asi:

    DECLARE @Alumno TABLE (
           
    IdAlumno int IDENTITY(1,1),
           
    Codigo as 'C-' + REPLACE(STR(IdAlumno, 5), ' ', '0'),
           
    Nombre varchar(10)
    )

    Saludos...


    publicado el 04 de June del 2010, a las 11:52 PM

Escribe tu Comentario:





arriba